备份恢复指南
数据备份和恢复操作指南
数据备份是服务器管理中最重要的环节之一。本指南将帮助您建立完善的备份策略。
控制面板备份
自动备份
- 备份频率:每日凌晨2点自动备份
- 保留期限:默认保留7天
- 备份内容:整个系统盘快照
手动备份
- 登录控制面板
- 进入”备份管理”页面
- 点击”创建备份”
- 输入备份名称和描述
- 等待备份完成(通常需要10-30分钟)
恢复备份
- 选择要恢复的备份点
- 点击”恢复”按钮
- 确认恢复操作
- 等待恢复完成并重启
文件级备份
使用tar命令
# 备份网站文件
tar -czf website_backup_$(date +%Y%m%d).tar.gz /var/www/html
# 备份配置文件
tar -czf config_backup_$(date +%Y%m%d).tar.gz /etc
# 备份用户数据
tar -czf home_backup_$(date +%Y%m%d).tar.gz /home
使用rsync同步
# 本地同步
rsync -av /var/www/html/ /backup/www/
# 远程同步
rsync -av /var/www/html/ user@backup-server:/backup/www/
数据库备份
MySQL备份
# 备份单个数据库
mysqldump -u root -p database_name > database_backup.sql
# 备份所有数据库
mysqldump -u root -p --all-databases > all_databases.sql
# 压缩备份
mysqldump -u root -p database_name | gzip > database_backup.sql.gz
PostgreSQL备份
# 备份单个数据库
pg_dump -U postgres database_name > database_backup.sql
# 备份所有数据库
pg_dumpall -U postgres > all_databases.sql
自动化备份脚本
创建备份脚本
#!/bin/bash
# backup.sh
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d_%H%M%S)
# 创建备份目录
mkdir -p $BACKUP_DIR
# 备份网站文件
tar -czf $BACKUP_DIR/website_$DATE.tar.gz /var/www/html
# 备份数据库
mysqldump -u root -p$DB_PASSWORD --all-databases | gzip > $BACKUP_DIR/mysql_$DATE.sql.gz
# 删除7天前的备份
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete
echo "Backup completed: $DATE"
设置定时任务
# 编辑crontab
crontab -e
# 每天凌晨2点执行备份
0 2 * * * /root/backup.sh >> /var/log/backup.log 2>&1
远程备份
使用SCP传输
# 上传到远程服务器
scp backup.tar.gz user@remote-server:/backup/
# 从远程服务器下载
scp user@remote-server:/backup/backup.tar.gz ./
使用云存储
# 安装rclone
curl https://rclone.org/install.sh | sudo bash
# 配置云存储
rclone config
# 上传备份
rclone copy /backup/ remote:backup/
恢复操作
文件恢复
# 解压备份文件
tar -xzf website_backup.tar.gz -C /
# 恢复权限
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
数据库恢复
# MySQL恢复
mysql -u root -p < all_databases.sql
# 恢复单个数据库
mysql -u root -p database_name < database_backup.sql
备份策略建议
3-2-1备份原则
- 3份副本:原始数据 + 2份备份
- 2种介质:本地硬盘 + 云存储
- 1份异地:远程备份服务器
备份频率
- 关键数据:每日备份
- 一般数据:每周备份
- 系统配置:每月备份
测试恢复
- 定期测试备份文件完整性
- 模拟灾难恢复流程
- 记录恢复时间和步骤
监控和告警
备份监控脚本
#!/bin/bash
# check_backup.sh
BACKUP_DIR="/backup"
LATEST_BACKUP=$(ls -t $BACKUP_DIR/*.tar.gz | head -1)
BACKUP_AGE=$(find $BACKUP_DIR -name "*.tar.gz" -mtime -1 | wc -l)
if [ $BACKUP_AGE -eq 0 ]; then
echo "WARNING: No recent backup found!"
# 发送告警邮件或通知
fi