应按数据类型分级备份:系统配置用rsync+tar+etckeeper;业务数据用增量rsync+硬链接快照;数据库须用mysqldump/mydumper或WAL+pg_dump;日志临时数据通常不备。
不同数据对一致性、恢复速度和安全性的要求差异很大,不能用同一套方式备份。
系统配置文件(/etc、/boot、/home 中的 dotfiles):用 rsync + tar 每日归档,配合 etckeeper 记录每次变更,便于回溯某次升级或配置错误前的状态。
业务数据(如网站根目录、应用上传目录):每日凌晨执行增量 rsync,保留最近 7 天硬链接快照;若数据敏感且量小,可加 inotifywait 实时触发同步,但不建议用于大目录。
数据库(MySQL/PostgreSQL):严禁直接拷贝数据文件。MySQL 推荐 mysqldump --single-transaction 或 mydumper;PostgreSQL 必须启用 WAL 归档 + pg_dump,才能实现时间点恢复(PITR)。
日志与临时数据(/var/log、/tmp):通常不备份,靠 logrotate 管理生命周期;确有审计需求时,仅压缩归档最近 30 天日志。
单一工具难兼顾去重、加密、校验、压缩四要素,推荐分层使用:
borgbackup 是首选——内置 AES-256 加密、重复数据删除、lz4 压缩、自动完整性校验,支持 SSH/S3 远程仓库rclone 将 borg 归档同步至对象存储(如 COS/S3),开启服务端加密与版本控制crontab 易用但环境受限;systemd timer 更健壮,适合关键系统。
无论用哪种调度器,都需做到:
PATH,避免因 cron 默认路径窄导致 rsync、borg 找不到命令/usr/bin/borg 而非 borg
test -w /backup && test -r /data || exit 1
borg check 或 sha256sum 校验归档完整性>/var/log/backup.log 2>&1
备份存在≠能恢复。保留规则不是拍脑袋定的:
apt upgrade 或修改 /etc 后自动触发 etckeeper commit
每月至少一次真实恢复演练:从归档中拉取随机日期的数据,在隔离环境解压、还原、验证可用性。不跑通恢复流程的备份,等于没备。