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

恢复后检查

  1. 确认文件属主是 www-data
  2. 打开网站看是否正常
  3. 登录后台确认文章都在

备份检查清单

  • ☐ 备份是否定时执行(看 /backup 目录有没有新文件)
  • ☐ 备份文件能不能解压(定期抽查)
  • ☐ 有没有异地备份(至少两份)
  • ☐ 有没有做过恢复演练(没演练过的备份等于没有)

本文为杰哥的折腾笔记原创教程,转载请注明出处。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注