概览:明确备份(Backup)与灾备(DR)的不同目标:备份侧重数据保全,灾备侧重业务连续性。
小分段:制定RPO(可接受的数据丢失时长)与RTO(可接受的恢复时间),例如 RPO=4小时、RTO=1小时。
步骤1:列出要备份的对象:系统盘快照、/home、/var/www、数据库、配置文件、证书等。
步骤2:评估数据量、增长速度与网络带宽;决定本地磁盘+异地副本或对象存储(例如青云对象存储S3兼容)作为目标。
步骤3:确定加密、保留策略(如保留7天的每日备份、4周的周备份、12个月的月备份)与权限控制。
常见类型:文件级备份(rsync/rclone)、块级快照(云盘/快照)、去重加密备份(Borg/Borgmatic/duplicity)、数据库转储(mysqldump/pg_dump)。
工具推荐:轻量文件同步用rsync+rclone,增量去重推荐Borg到SFTP或对象存储,数据库用逻辑转储配合压缩与加密。
准备:在源机安装rsync(Ubuntu:sudo apt update && sudo apt install rsync -y),目标机开放rsync或使用SSH。
步骤:在源机创建脚本 /usr/local/bin/backup_www.sh,内容示例:
#!/bin/bash RSYNC_OPTS="-az --delete --progress" DEST="user@backup.example.com:/backups/www/$(hostname)-$(date +%F)" rsync $RSYNC_OPTS /var/www/ "$DEST"保存并 chmod +x /usr/local/bin/backup_www.sh。
设置定时:编辑 crontab -e 添加每日凌晨2点任务:
0 2 * * * /usr/local/bin/backup_www.sh >> /var/log/backup_www.log 2>&1测试:手动运行脚本并检查目标目录与日志。
安装与初始化:在源机安装Borg(Ubuntu:sudo apt install borgbackup)。在目标SFTP上创建用户 borguser 并设置目录 /srv/borgrepo。
初始化仓库(示例使用远端SFTP):
export BORG_PASSPHRASE='你的强口令' borg init --encryption=repokey-blake2 user@backup.example.com:/srv/borgrepo/$(hostname)
做备份:
borg create --stats --progress user@backup.example.com:/srv/borgrepo/$(hostname)::$(date +%F_%H%M) /etc /var/www /home保留策略(清理旧备份):
borg prune -v --list user@backup.example.com:/srv/borgrepo/$(hostname) --keep-daily=7 --keep-weekly=4 --keep-monthly=12恢复示例:
borg list user@backup.example.com:/srv/borgrepo/$(hostname) borg extract user@backup.example.com:/srv/borgrepo/$(hostname)::2026-08-01_0200 path/to/restore记得把BORG_PASSPHRASE放入受限权限的文件并在脚本中引用以供自动化使用。
备份步骤(全库):
mysqldump -u backupuser -p'强密码' --single-transaction --quick --routines --events --all-databases | gzip > /backups/mysql/$(date +%F).sql.gz小分段:若为大库可使用Percona XtraBackup做物理热备份。
恢复步骤:
gunzip < backup.sql.gz mysql -u root -p < backup.sql要点:备份前锁表或使用 --single-transaction;对于InnoDB避免长事务导致的问题。
制定演练计划:定期(月度或季度)做恢复演练,至少包含文件恢复、数据库恢复及整机从快照还原。
演练步骤示例: 1)在隔离环境恢复最新备份; 2)验证服务启动(web、db、证书等); 3)进行数据校验(特定表行数/校验和); 4)记录耗时与问题,更新文档与SOP。
监控要点:备份任务状态、最后成功时间、备份大小、错误日志。可用Prometheus+Alertmanager或简单邮件告警。
简单例子:备份脚本在结束时发送邮件:
if [ $? -ne 0 ]; then mail -s "备份失败:$(hostname)" admin@example.com < /var/log/backup.log fi并将备份日志上传到集中日志系统便于审计。
问:针对不同类型数据,如何合理设定备份频率以兼顾成本与风险?
答:按重要性分层:热数据(交易/数据库)建议近实时或每5-15分钟增量;工作数据(用户上传、网站内容)建议每小时或每天;归档数据每周或每月。结合RPO/RTO、带宽与存储成本综合决定。
问:备份数据在传输与存储中如何保证机密性与合规(例如个人资料)?
答:传输加密用SSH/S3 TLS;存储端启用加密(Borg的repokey或对象存储的服务器端加密);限制访问权限与审计日志;对敏感数据做脱敏或单独加密并保留合规保留期。
问:恢复时常见失败有哪些?如何排查?
答:常见问题包括权限错误、密码/口令错误、备份损坏或缺失、版本不兼容。排查按顺序:查看备份日志→验证仓库完整性(Borg check/rsync校验)→确认用户与权限→测试小文件恢复→逐步扩大恢复范围并记录错误码。