织梦定期备份网站怎么设置

备份是织梦站点最后一道防线。无论是被黑、误删、服务器故障还是升级失败,一份完整且可恢复的备份都能让损失降到最低。但很多站长的备份只是"导出数据库",恢复时才发现模板丢了、附件没备份、配置不一致。下面给出一套覆盖文件、数据库、配置、异地存储的完整备份方案。

一、需要备份的内容

1. 文件层面

  • 整站目录 /www/wwwroot/dede/,重点关注 /uploads//templets//data/
  • nginx/apache 配置文件 /etc/nginx/conf.d//etc/httpd/conf/
  • PHP 配置 /etc/php.ini/etc/php-fpm.d/
  • SSL 证书与密钥。

2. 数据库层面

  • 织梦主库 dedecms 全量备份;
  • MySQL 系统库 mysql(含用户权限);
  • binlog 日志(用于增量恢复)。

二、数据库自动备份脚本

#!/bin/bash
# /root/scripts/dede_db_backup.sh
DB_USER="root"
DB_PASS="your_password"
DB_NAME="dedecms"
BACKUP_DIR="/data/backup/db"
DATE=$(date +%F_%H%M)

mkdir -p $BACKUP_DIR
mysqldump -u$DB_USER -p$DB_PASS --single-transaction --routines \
    --triggers --default-character-set=utf8 \
    $DB_NAME | gzip > $BACKUP_DIR/${DB_NAME}_$DATE.sql.gz

# 保留 30 天
find $BACKUP_DIR -name "*.sql.gz" -mtime +30 -delete

加入 crontab:

# 每日凌晨 3 点执行
0 3 * * * /bin/bash /root/scripts/dede_db_backup.sh >> /var/log/dede_backup.log 2>&1

三、文件自动备份脚本

#!/bin/bash
# /root/scripts/dede_file_backup.sh
SITE_DIR="/www/wwwroot/dede"
BACKUP_DIR="/data/backup/files"
DATE=$(date +%F)

mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/dede_files_$DATE.tar.gz \
    -C /www/wwwroot dede \
    --exclude="dede/data/cache/*" \
    --exclude="dede/data/sessions/*" \
    --exclude="dede/data/tplcache/*"

# 保留 14 天
find $BACKUP_DIR -name "dede_files_*.tar.gz" -mtime +14 -delete

加入 crontab:

# 每周日凌晨 4 点全量备份
0 4 * * 0 /bin/bash /root/scripts/dede_file_backup.sh

四、异地存储

本地备份无法应对服务器故障或机房断网,必须异地存储:

1. 上传到对象存储

# 使用阿里云 ossutil
ossutil cp /data/backup/db/dedecms_$(date +%F).sql.gz oss://your-bucket/dede-backup/db/
ossutil cp /data/backup/files/dede_files_$(date +%F).tar.gz oss://your-bucket/dede-backup/files/

2. rsync 到异地服务器

rsync -avz --delete /data/backup/ backup-server:/data/remote-backup/dede/

3. 加入 crontab

30 4 * * * /root/scripts/dede_sync_remote.sh
异地备份建议遵循 3-2-1 原则:3 份副本、2 种介质、1 份异地。仅本地备份等于没有备份。

五、织梦后台自带的数据库备份

除脚本备份外,织梦后台也提供备份功能,适合不会用 SSH 的站长:

  1. 登录后台 → 系统 → 数据库备份/还原;
  2. 选择"分卷大小"(建议 2048KB);
  3. 点击"开始备份",等待完成;
  4. 备份文件位于 /data/backupdata/ 目录。

注意:后台备份仅覆盖数据库,不包含文件,必须配合 FTP 下载文件。

六、恢复演练

备份不验证等于没有备份。建议每季度做一次恢复演练:

  1. 在测试服务器准备干净环境;
  2. 解压文件备份到对应目录;
  3. 导入数据库备份:gunzip < dedecms.sql.gz | mysql -u root -p dedecms
  4. 修改 /data/common.inc.php 中的数据库连接信息;
  5. 访问测试站点,验证首页、栏目、文章、后台是否正常;
  6. 记录恢复耗时,作为应急响应时间参考。

七、备份安全

  • 备份脚本中的数据库密码使用 --defaults-extra-file 而非明文参数;
  • 异地备份传输使用 SSH/HTTPS,禁止 FTP 明文;
  • 对象存储 bucket 设为私有,禁止公开访问;
  • 定期清理过期备份,避免泄露过多历史数据。

八、注意事项

  • 备份前最好停掉采集等写入操作,避免备份不一致;
  • 大站可考虑使用 xtrabackup 做物理备份,速度远快于 mysqldump;
  • 模板与 uploads 目录变化频繁,建议每日增量备份;
  • 每次织梦升级前后都做一次全量备份。
定期备份的价值在于"平时无感,关键时刻救命"。建议把脚本化备份 + 异地存储 + 季度演练三件事一次性配齐,并把备份成功率纳入监控告警。当某天站点被黑或服务器宕机时,一份可恢复的异地备份就是最后一根稻草,能让你在几小时内回到正常状态,而不至于从零开始重建。