备份恢复指南

数据备份和恢复操作指南

数据备份是服务器管理中最重要的环节之一。本指南将帮助您建立完善的备份策略。

控制面板备份

自动备份

  • 备份频率:每日凌晨2点自动备份
  • 保留期限:默认保留7天
  • 备份内容:整个系统盘快照

手动备份

  1. 登录控制面板
  2. 进入”备份管理”页面
  3. 点击”创建备份”
  4. 输入备份名称和描述
  5. 等待备份完成(通常需要10-30分钟)

恢复备份

  1. 选择要恢复的备份点
  2. 点击”恢复”按钮
  3. 确认恢复操作
  4. 等待恢复完成并重启

文件级备份

使用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