织梦定期备份网站怎么设置
备份是织梦站点最后一道防线。无论是被黑、误删、服务器故障还是升级失败,一份完整且可恢复的备份都能让损失降到最低。但很多站长的备份只是"导出数据库",恢复时才发现模板丢了、附件没备份、配置不一致。下面给出一套覆盖文件、数据库、配置、异地存储的完整备份方案。
一、需要备份的内容
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 的站长:
- 登录后台 → 系统 → 数据库备份/还原;
- 选择"分卷大小"(建议 2048KB);
- 点击"开始备份",等待完成;
- 备份文件位于
/data/backupdata/目录。
注意:后台备份仅覆盖数据库,不包含文件,必须配合 FTP 下载文件。
六、恢复演练
备份不验证等于没有备份。建议每季度做一次恢复演练:
- 在测试服务器准备干净环境;
- 解压文件备份到对应目录;
- 导入数据库备份:
gunzip < dedecms.sql.gz | mysql -u root -p dedecms; - 修改
/data/common.inc.php中的数据库连接信息; - 访问测试站点,验证首页、栏目、文章、后台是否正常;
- 记录恢复耗时,作为应急响应时间参考。
七、备份安全
- 备份脚本中的数据库密码使用
--defaults-extra-file而非明文参数; - 异地备份传输使用 SSH/HTTPS,禁止 FTP 明文;
- 对象存储 bucket 设为私有,禁止公开访问;
- 定期清理过期备份,避免泄露过多历史数据。
八、注意事项
- 备份前最好停掉采集等写入操作,避免备份不一致;
- 大站可考虑使用 xtrabackup 做物理备份,速度远快于 mysqldump;
- 模板与 uploads 目录变化频繁,建议每日增量备份;
- 每次织梦升级前后都做一次全量备份。
定期备份的价值在于"平时无感,关键时刻救命"。建议把脚本化备份 + 异地存储 + 季度演练三件事一次性配齐,并把备份成功率纳入监控告警。当某天站点被黑或服务器宕机时,一份可恢复的异地备份就是最后一根稻草,能让你在几小时内回到正常状态,而不至于从零开始重建。