Files
nexus/wiki/sources/Ubuntu服务器通过rsync实现日常增量备份.md

4.1 KiB
Raw Blame History

title, type, tags, date
title type tags date
Ubuntu服务器通过rsync实现日常增量备份 source
ubuntu
rsync
backup
nas
nfs
fstab
2026-04-15

Source File

Summary

  • 核心主题Ubuntu 服务器通过 rsync 实现对 NAS 的每日增量备份自动化
  • 问题域已有机房镜像备份Clonezilla需补充实时增量数据保护方案
  • 方法/机制rsync -azR --delete 差异同步lockfile 防重入crontab 凌晨自动执行,/etc/fstab 实现 NFS 永久挂载
  • 结论/价值:构建"时间点恢复"能力NAS 掉线时自动中止备份防止本地硬盘爆满

Key Claims

  • rsync 在备份正在写入的二进制文件(如 MySQL时可能导致恢复后无法启动应先用 mysqldump 导出 SQL 再同步
  • rsync 返回码 23/24 在备份运行中系统时属于正常(部分文件权限问题或源文件消失),重点检查数据是否大部分已同步
  • /etc/fstab 中 _netdev 参数确保网络设备就绪后再执行挂载,防止开机因网络未就绪而挂载失败
  • lockfile 机制防止 rsync_backup.sh 重入,脚本开头检查 lockfile 存在则跳过本次执行

Key Quotes

"rsync -azR --delete — -a 归档模式保留权限属性,-z 压缩传输,-R 相对路径,--delete 删除目标端多余文件" — rsync 核心参数解析 "0 3 * * * /usr/local/bin/rsync_backup.sh — 每天凌晨 3 点业务低峰期执行备份" — Crontab 时间配置 "192.168.3.17:/volume2/backup /mnt/nas_backup nfs defaults,timeo=900,retrans=5,_netdev 0 0" — NFS /etc/fstab 永久挂载条目 "timeo=90090秒超时retrans=5重连5次_netdev等待网络就绪" — NFS 挂载参数详解

Key Concepts

  • rsync:远程增量同步工具,通过 Delta-transfer 算法只传输变化部分
  • 增量备份:仅备份自上次备份以来变化的文件,相比全量备份节省存储和带宽
  • NFS永久挂载:通过 /etc/fstab 将 NFS 挂载配置为系统启动时自动执行
  • lockfile防止脚本重入的简单机制PID 文件 + kill -0 检测进程存活
  • CrontabLinux 定时任务调度器,支持分钟级精确控制
  • Clonezilla:磁盘镜像备份工具,与 rsync 形成"整机镜像 + 增量数据"二级保护
  • mysqldumpMySQL/MariaDB 逻辑备份工具,在 rsync 之前先导出 SQL 文件保证数据库一致性

Key Entities

  • Synology NAS备份目标端192.168.3.17:/volume2/backup
  • Ubuntu服务器:备份源端,运行 rsync_backup.sh
  • Docker:数据来源之一(/var/lib/docker/volumes/、/etc/docker/、/home/shenwei/Docker/

Connections

备份策略矩阵

备份类型 工具 频率 覆盖范围 恢复时间
整机镜像 Clonezilla 按需/周 全盘扇区级 长(全盘还原)
增量数据 rsync 每日凌晨3点 变化文件 短(选择性还原)

关键脚本rsync_backup.sh 防重入逻辑

LOCKFILE="/tmp/rsync_backup.lock"
if [ -e ${LOCKFILE} ] && kill -0 `cat ${LOCKFILE}`; then
    echo "备份任务已在运行中,跳过本次执行。"
    exit
fi
echo $$ > ${LOCKFILE}
trap "rm -f ${LOCKFILE}" EXIT

NFS 永久挂载验证流程

# 1. 卸载当前挂载
sudo umount /mnt/nas_backup
# 2. 模拟开机自动挂载
sudo mount -a
# 3. 验证挂载成功
df -h | grep nas_backup

Contradictions

常见问题排查

问题 原因 解决方案
重启后挂载失效 nfs-common 启动慢于 mount -a systemctl enable remote-fs.target
rsync 返回码 20 进程被手动中断SIGINT/SIGTERM 使用 nohup 或 screen 后台运行
备份写满本地硬盘 NAS 掉线时挂载点变成普通目录 脚本开头加 mountpoint -q 检查