rsync 增量备份实战:把重要目录稳稳同步到另一台机器

举报
yd_281047095 发表于 2026/11/07 09:24:38 2026/11/07
【摘要】 服务器上最怕的不是磁盘坏,而是坏的时候没有可用备份。rsync 做增量同步很合适:第一次全量拷,之后只传变化部分,带宽和耗时都省。下面按「本机目录 → 远端目录」的常见场景走一遍,并补上排错清单。安装与基本形态多数发行版自带 rsync。没有的话: Debian/Ubuntusudo apt-get update && sudo apt-get install -y rsync RHEL/C...

服务器上最怕的不是磁盘坏,而是坏的时候没有可用备份。rsync 做增量同步很合适:第一次全量拷,之后只传变化部分,带宽和耗时都省。下面按「本机目录 → 远端目录」的常见场景走一遍,并补上排错清单。

安装与基本形态
多数发行版自带 rsync。没有的话:

Debian/Ubuntu

sudo apt-get update && sudo apt-get install -y rsync

RHEL/CentOS/Rocky

sudo yum install -y rsync
最常用的远端推送写法:

rsync -avz --progress /data/app/ user@backup-host:/backup/app/
含义简记:

・-a:归档模式(递归、保留权限/时间戳/软链等)

・-v:输出过程

・-z:传输时压缩

・–progress:看每个文件进度

源路径末尾有没有 / 差很多:/data/app/ 表示同步目录内容;/data/app 会在目标下再造一层 app。写脚本前先用 --dry-run(或 -n)预演一次。

推荐加上的安全选项
生产同步建议显式写清这些:

rsync -avz --delete --partial --timeout=120
–exclude=‘*.tmp’ --exclude=‘cache/’
-e “ssh -p 22 -o StrictHostKeyChecking=accept-new”
/data/app/ user@backup-host:/backup/app/
・–delete:源已删除的文件,目标也删(镜像同步才开;误开会删目标多出来的文件)

・–partial:大文件中断后可续传残片

・–timeout:避免 SSH 假死后一直挂着

・–exclude:跳过缓存、临时文件,减少噪声

密钥登录请提前配好,定时任务里不要塞密码。

用 systemd timer 做每日备份
比起 crontab,timer 更容易看日志。示例服务与定时器:

/etc/systemd/system/rsync-app-backup.service:

[Unit]
Description=rsync backup for /data/app
After=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/bin/rsync -avz --delete --partial
–exclude=‘*.tmp’ --exclude=‘cache/’
-e “ssh -i /root/.ssh/backup_ed25519”
/data/app/ backup@backup-host:/backup/app/
/etc/systemd/system/rsync-app-backup.timer:

[Unit]
Description=Daily rsync backup at 02:30

[Timer]
OnCalendar=--* 02:30:00
Persistent=true

[Install]
WantedBy=timers.target
启用:

sudo systemctl daemon-reload
sudo systemctl enable --now rsync-app-backup.timer
systemctl list-timers | grep rsync
journalctl -u rsync-app-backup.service -n 50
常见故障怎么查

  1. Permission denied:远端用户对目标目录没写权限,或 SSH 密钥不对。先 ssh user@host 手动登录,再 touch /backup/app/.write-test。

  2. 协议版本 / 命令找不到:远端没装 rsync,或 PATH 不同。在远端直接执行 which rsync。

  3. 同步完目标多了一层目录:多半是源路径末尾 / 写错,用 -n 预演核对树形。

  4. –delete 误删:先去掉 --delete 跑通,确认双方目录角色后再开;重要目标可先加 --backup --backup-dir=/backup/trash/$(date +%F)。

  5. 特别慢:大目录第一次全量正常;之后若仍很慢,检查是否每次都在传不变的大文件(权限/时间戳被改),可加 --checksum 对比排查,但日常别默认开(更吃 CPU)。

小结
rsync 适合「目录级、可重复、可增量」的备份与发布同步。先 -n 预演,密钥登录跑通,再用 timer 固定节奏;–delete 与 exclude 规则想清楚再上生产。把上面服务落到两台机器上,比临时手敲一条命令可靠得多。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。