完全备份:备份所有数据
tar -cvpzf /backup/full_backup_$(date +%Y%m%d).tar.gz --exclude=/backup --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/tmp /
增量备份:仅备份自上次备份后变化的数据
tar -cvpzf /backup/incremental_backup_$(date +%Y%m%d).tar.gz --listed-incremental=/backup/snapshot.file --exclude=/backup --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/tmp /
差异备份:备份自上次完全备份后变化的数据
数据类型 | 备份频率 | 保留周期 |
---|---|---|
系统关键文件 | 每日 | 7天 |
用户数据 | 每日增量,每周完全 | 4周 |
数据库 | 实时或每小时 | 30天 |
配置文件 | 每次变更时 | 永久 |
使用cron设置定时任务:
# 编辑crontab
crontab -e
# 示例:每天凌晨2点执行完全备份
0 2 * * 0 /path/to/full_backup_script.sh
# 示例:工作日每天凌晨1点执行增量备份
0 1 * * 1-5 /path/to/incremental_backup_script.sh
rsync -avz --delete /source/directory/ /backup/directory/
dd if=/dev/sda of=/backup/sda.img bs=4M status=progress
duplicity /home user@backupserver::/backup/home
timeshift --create --comments "Daily Backup" --tags D
# 完全备份
mysqldump -u root -p --all-databases > /backup/mysql_all_$(date +%Y%m%d).sql
# 增量备份(需要启用二进制日志)
mysqladmin -u root -p flush-logs
pg_dumpall -U postgres > /backup/pg_all_$(date +%Y%m%d).sql
# 从tar备份恢复
tar -xvpzf /backup/full_backup.tar.gz -C /restore/location
# 从rsync备份恢复
rsync -avz /backup/directory/ /restore/location/
# 使用dd恢复整个磁盘
dd if=/backup/sda.img of=/dev/sda bs=4M status=progress
# 使用Live CD恢复系统
# MySQL恢复
mysql -u root -p < /backup/mysql_all_20230101.sql
# PostgreSQL恢复
psql -U postgres -f /backup/pg_all_20230101.sql
定期验证备份
# 检查备份文件完整性
gzip -t /backup/full_backup.tar.gz
监控备份状态
# 检查备份文件大小变化
du -sh /backup/*
# 检查最后一次备份时间
ls -lht /backup | head
设置报警机制
# 示例:如果24小时内没有新备份则报警
find /backup -name "*.tar.gz" -mtime -1 | grep -q . || echo "备份失败" | mail -s "备份警报" admin@example.com
3-2-1备份原则:
加密敏感数据备份:
# 使用GPG加密备份
tar -czf - /sensitive/data | gpg -c -o /backup/sensitive_$(date +%Y%m%d).tar.gz.gpg
文档化恢复流程:
考虑云备份:
# 使用rclone备份到云存储
rclone copy /backup remote:backup-bucket
监控备份存储空间:
df -h /backup
通过实施这些策略和工具,您可以建立一个可靠的Linux备份和恢复系统,确保数据安全性和业务连续性。