VPS数据备份是服务器运维的重要环节。本文将介绍完整的VPS备份方案,确保数据安全。
1. 备份策略
3-2-1备份原则
# 3份副本
- 本地数据
- 本地备份
- 异地备份
# 2种存储介质
- VPS本地磁盘
- 远程服务器/云存储
# 1份异地
- 不同地理位置
- 不同服务商
2. 备份内容
网站数据
# 网站文件
/var/www/html/
# 数据库
# MySQL: mysqldump
# PostgreSQL: pg_dump
# 配置文件
/etc/nginx/
/etc/mysql/
/home/user/.ssh/
3. 备份工具
rsync
# 本地备份
rsync -avz /var/www/html /backup/
# 远程备份
rsync -avz -e "ssh -p 2222" /var/www/html user@backup-server:/backup/
tar压缩
# 压缩备份
tar -czf backup_$(date +%Y%m%d).tar.gz /var/www/html
# 排除目录
tar -czf backup.tar.gz --exclude='*.log' --exclude='cache/' /var/www/html
4. 自动化脚本
#!/bin/bash
# auto_backup.sh
DATE=$(date +%Y%m%d)
BACKUP_DIR="/backup"
LOG_FILE="/var/log/backup.log"
# 备份网站
tar -czf $BACKUP_DIR/www_$DATE.tar.gz /var/www/html
# 备份数据库
mysqldump -u root -pPASSWORD mydb | gzip > $BACKUP_DIR/db_$DATE.sql.gz
# 上传到云存储
/usr/local/bin/rclone copy $BACKUP_DIR remote:backup/
# 清理旧备份(保留7天)
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
echo "Backup completed: $(date)" >> $LOG_FILE
5. 云存储同步
rclone配置
# 安装rclone
curl https://rclone.org/install.sh | sudo bash
# 配置
rclone config
# 同步到云存储
rclone sync /backup remote:backup
支持的云存储
- AWS S3
- 阿里云OSS
- 腾讯云COS
- Backblaze B2
6. 定时任务
# 编辑crontab
crontab -e
# 每天凌晨2点备份
0 2 * * * /usr/local/bin/auto_backup.sh
# 每周日凌晨3点完整备份
0 3 * * 0 /usr/local/bin/full_backup.sh
7. 灾难恢复
恢复流程
1. 停止相关服务
2. 恢复网站文件
tar -xzf backup.tar.gz -C /var/www/
3. 恢复数据库
gunzip < db_backup.sql.gz | mysql -u root -p mydb
4. 检查配置
nginx -t
5. 启动服务
systemctl start nginx
systemctl start mysql
8. 监控与告警
#!/bin/bash
# backup_monitor.sh
# 检查备份是否存在
if [ ! -f /backup/latest_backup.tar.gz ]; then
# 发送告警
curl -X POST https://oapi.dingtalk.com/robot/send \
-H 'Content-Type: application/json' \
-d '{"msgtype": "text", "text": {"content": "VPS备份失败!"}}'
fi
9. 最佳实践
- 定期备份:至少每日备份
- 异地存储:云存储或远程服务器
- 加密敏感数据:数据库加密
- 定期恢复测试:确保备份可用
- 监控告警:备份失败及时通知
总结
VPS备份是防止数据丢失的最后防线。关键要点:
- 3-2-1原则:3份副本,2种介质,1份异地
- 自动化:定时自动备份
- 验证:定期恢复测试
- 监控:备份状态监控
📖 进阶方案:学习使用BorgBackup、Restic等去重备份工具,以及配置VPS快照功能。