WordPress 备份与恢复
网站数据是命根子。定期备份,出了问题能恢复,不至于从零开始。
一、要备份什么
- 网站文件:/var/www/html 下所有文件(程序、主题、插件、上传的图片)
- 数据库:文章、评论、设置都在数据库里
- 配置文件:Nginx 配置、SSL 证书(可选,有记录就行)
二、手动备份(SQLite 版)
备份网站文件
sudo tar -czvf /backup/wp-files-$(date +%Y%m%d).tar.gz /var/www/html
备份数据库(SQLite)
SQLite 的数据库就是一个文件,直接复制就行:
sudo cp /var/www/html/wp-content/database/.ht.*/.ht.sqlite /backup/db-$(date +%Y%m%d).sqlite
注意:复制前最好先停一下网站,或在访问量低的时候操作,避免复制到一半写入导致文件损坏。
三、自动备份(推荐)
写备份脚本
cat > /root/backup.sh << 'EOF'
#!/bin/bash
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d)
mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/wp-files-$DATE.tar.gz /var/www/html
find /var/www/html/wp-content/database -name ".ht.sqlite" -exec cp {} $BACKUP_DIR/db-$DATE.sqlite \;
# 只保留最近 7 天
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
find $BACKUP_DIR -name "*.sqlite" -mtime +7 -delete
EOF
chmod +x /root/backup.sh
加到定时任务
crontab -e # 每天凌晨 3 点备份 0 3 * * * /root/backup.sh
四、异地备份
只放本机不够,服务器挂了备份也没了。用 rsync 同步到另一台机器(比如家里的 NAS):
rsync -avz --delete -e "ssh -i /path/to/key" /backup/ user@nas-ip:/backup/
五、恢复流程
恢复文件
sudo tar -xzvf /backup/wp-files-20261013.tar.gz -C /
恢复数据库
sudo cp /backup/db-20261013.sqlite /var/www/html/wp-content/database/.ht.*/.ht.sqlite sudo chown www-data:www-data /var/www/html/wp-content/database/.ht.*/.ht.sqlite
恢复后检查
- 确认文件属主是 www-data
- 打开网站看是否正常
- 登录后台确认文章都在
备份检查清单
- ☐ 备份是否定时执行(看 /backup 目录有没有新文件)
- ☐ 备份文件能不能解压(定期抽查)
- ☐ 有没有异地备份(至少两份)
- ☐ 有没有做过恢复演练(没演练过的备份等于没有)
本文为杰哥的折腾笔记原创教程,转载请注明出处。
