Debian 文件自动备份实用方案
一 方案总览与选择
- 本地镜像同步:用 rsync 做目录镜像,适合本机或挂载盘备份,支持增量、删除同步,命令简洁、稳定。
- 打包归档:用 tar 生成 .tar.gz 快照,便于长期留存与传输,恢复时解压到目标目录即可。
- 加密增量与云存储:用 duplicity 做加密增量,支持多种后端(如本地、S3 等),适合对安全性有要求的场景。
- 高效去重长期归档:用 borgbackup 做去重压缩归档,适合多版本长期保留与远程存储。
- 定时执行:简单周期任务首选 cron;若需“错过补跑”“依赖网络就绪”“统一日志”等能力,可用 systemd 定时器。
二 方案一 使用 rsync 做本地或远程自动备份(推荐)
- 安装与准备
- 安装工具:sudo apt update && sudo apt install -y rsync cron
- 建议以专用备份用户运行;远程备份请提前配置 SSH 免密登录(ssh-keygen;将公钥放入远端 authorized_keys)。
- 备份脚本示例(本地按日期目录镜像)
- 定时执行(cron)
- 编辑:crontab -e(root 用 sudo crontab -e)
- 每天 02:00 执行:0 2 * * * /usr/local/bin/backup.sh
- 查看任务:crontab -l;查看日志:grep CRON /var/log/syslog
- 远程备份示例(通过 SSH)
- rsync -a --delete -e ssh /path/to/source/ user@remote:/path/to/backup/$(date +%Y%m%d)/
- 提示:远端目录需可写;如需压缩传输可加 -z。
三 方案二 使用 tar 做打包归档备份
- 备份命令(按日期生成压缩包)
- tar -czvf /backup/backup-$(date +%F).tar.gz /path/to/source
- 恢复命令(解压到目标目录)
- tar -xzvf /backup/backup-2025-12-30.tar.gz -C /path/to/destination
- 自动化
- 将 tar 命令写入脚本,交由 cron 定时执行(同上);适合对单点快照留存与离线保存的需求。
四 进阶方案 加密增量与去重归档
- duplicity(加密增量)
- 备份:duplicity --full-if-older-than 7D /path/to/source file:///backup/duplicity/
- 恢复:duplicity file:///backup/duplicity/ /path/to/restore
- 特点:支持加密与增量,适合对数据保密性与带宽/存储优化有要求的场景。
- borgbackup(去重压缩)
- 备份:borg create --compression zstd,level=19 backup::archive-$(date +%Y%m%d) /path/to/source
- 恢复:borg extract backup::archive-2025-12-30 /path/to/restore
- 特点:高效去重、可加密、适合长期多版本保留与远程仓库(如 SSH)。
五 定时方式与运维要点
- cron 快速上手
- 时间格式:分 时 日 月 周;示例:0 2 * * * /usr/local/bin/backup.sh(每天 02:00)
- 日志:grep CRON /var/log/syslog;确保脚本可执行(chmod +x)。
- systemd 定时器(更现代,支持错过补跑)
- 服务单元:/etc/systemd/system/backup.service
[Unit]
Description=Backup service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
- 定时器单元:/etc/systemd/system/backup.timer
[Unit]
Description=Run backup daily at 02:00
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
- 启用与查看:
- sudo systemctl daemon-reload
- sudo systemctl enable --now backup.timer
- systemctl list-timers --all
- 日志:journalctl -u backup.service
- 通用运维建议
- 先手动运行脚本验证;为备份目录设置合理权限(如 700)。
- 定期做恢复演练;保留至少 7–30 天 的历史版本(按容量与合规调整)。
- 远程备份优先用 SSH 密钥,避免交互密码;必要时配置 防火墙 与访问控制。