温馨提示×

Debian如何设置文件自动备份

小樊
45
2025-12-30 23:11:20
栏目: 智能运维

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)。
  • 备份脚本示例(本地按日期目录镜像)
    • 新建脚本:/usr/local/bin/backup.sh
      #!/usr/bin/env bash
      set -Eeuo pipefail
      
      SOURCE_DIR="/path/to/source"
      BACKUP_DIR="/path/to/backup"
      DATE=$(date +"%Y%m%d")
      RSYNC_OPTS=(-a --delete --info=progress2)
      
      mkdir -p "$BACKUP_DIR/$DATE"
      rsync "${RSYNC_OPTS[@]}" "$SOURCE_DIR/" "$BACKUP_DIR/$DATE/"
      
      # 可选:保留最近 N 天
      KEEP_DAYS=7
      find "$BACKUP_DIR" -maxdepth 1 -type d -mtime +$KEEP_DAYS -exec rm -rf {} +
      
    • 赋权:chmod +x /usr/local/bin/backup.sh
  • 定时执行(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 密钥,避免交互密码;必要时配置 防火墙 与访问控制。

0