Linux 系统备份和恢复是数据安全的重要保障,需要掌握各种备份策略和恢复方法。
备份类型:
- 完全备份(Full Backup):备份所有数据
- 增量备份(Incremental Backup):只备份自上次备份以来变化的数据
- 差异备份(Differential Backup):备份自上次完全备份以来变化的数据
- 热备份(Hot Backup):在系统运行时进行备份
- 冷备份(Cold Backup):在系统停止时进行备份
备份工具:
- tar:归档工具
- 常用选项:
- -c:创建归档
- -x:提取归档
- -v:显示详细信息
- -f:指定归档文件
- -z:使用 gzip 压缩
- -j:使用 bzip2 压缩
- 示例:
- tar -czvf backup.tar.gz /path/to/backup:创建压缩备份
- tar -xzvf backup.tar.gz:提取压缩备份
- tar -czvf backup-$(date +%Y%m%d).tar.gz /path/to/backup:带时间戳的备份
- 常用选项:
- rsync:同步和备份工具
- 常用选项:
- -a:归档模式,保留文件属性
- -v:显示详细信息
- -z:压缩传输
- --delete:删除目标中多余的文件
- --exclude:排除文件或目录
- 示例:
- rsync -avz /source/ /destination/:同步目录
- rsync -avz --delete /source/ /destination/:同步并删除多余文件
- rsync -avz --exclude '*.log' /source/ /destination/:排除日志文件
- 常用选项:
- dd:磁盘和分区备份工具
- 示例:
- dd if=/dev/sda of=/backup/sda.img:备份整个磁盘
- dd if=/dev/sda1 of=/backup/sda1.img:备份分区
- dd if=/backup/sda.img of=/dev/sda:恢复磁盘
- 示例:
- dump/restore:文件系统备份工具(ext2/ext3/ext4)
- dump -0u -f /backup/root.dump /:备份根文件系统
- restore -rf /backup/root.dump:恢复文件系统
- Bacula:企业级备份解决方案
- Amanda:高级 Maryland 自动网络磁盘归档器
- Duplicity:加密备份工具
- Borg:去重备份工具
数据库备份:
- MySQL:
- mysqldump:逻辑备份工具
- mysqldump -u root -p database > backup.sql:备份数据库
- mysqldump -u root -p --all-databases > all.sql:备份所有数据库
- mysqldump -u root -p --single-transaction database > backup.sql:一致性备份
- mysql -u root -p database < backup.sql:恢复数据库
- mysqlhotcopy:物理备份工具(MyISAM)
- Percona XtraBackup:物理备份工具(InnoDB)
- mysqldump:逻辑备份工具
- PostgreSQL:
- pg_dump:逻辑备份工具
- pg_dump database > backup.sql:备份数据库
- pg_dumpall > all.sql:备份所有数据库
- psql database < backup.sql:恢复数据库
- pg_basebackup:物理备份工具
- pg_dump:逻辑备份工具
- MongoDB:
- mongodump:备份工具
- mongorestore:恢复工具
系统备份策略:
- 3-2-1 原则:
- 3 份备份副本
- 2 种不同介质
- 1 份异地备份
- 备份频率:
- 完全备份:每周一次
- 增量备份:每天一次
- 差异备份:每天一次
- 保留策略:
- 每日备份保留 7 天
- 每周备份保留 4 周
- 每月备份保留 12 个月
- 自动化备份:
- 使用 cron 定时执行备份脚本
- 示例:
bash
#!/bin/bash BACKUP_DIR="/backup" DATE=$(date +%Y%m%d) tar -czvf $BACKUP_DIR/backup-$DATE.tar.gz /path/to/backup find $BACKUP_DIR -name "backup-*.tar.gz" -mtime +7 -delete
云备份解决方案:
- AWS S3:对象存储服务
- Azure Blob Storage:Azure 对象存储
- Google Cloud Storage:Google 云存储
- 阿里云 OSS:阿里云对象存储
- 腾讯云 COS:腾讯云对象存储
- rclone:多云存储同步工具
备份验证:
- 定期测试恢复流程
- 验证备份完整性
- 检查备份文件大小
- 使用校验和验证数据
恢复策略:
- 完全恢复:从完全备份恢复
- 增量恢复:从完全备份开始,依次应用增量备份
- 差异恢复:从完全备份开始,应用最新的差异备份
- 时间点恢复:恢复到指定时间点(需要 binlog)
- 灾难恢复:异地备份恢复
备份最佳实践:
- 制定备份策略文档
- 自动化备份流程
- 定期测试恢复
- 加密敏感数据
- 监控备份状态
- 保留多个备份版本
- 异地备份
- 定期审查备份策略
- 文档化恢复流程
故障排查:
- 备份失败:检查磁盘空间、权限、网络连接
- 恢复失败:验证备份文件完整性、检查目标路径
- 性能问题:优化备份时间、使用增量备份
- 存储空间不足:清理旧备份、使用压缩