Linux rsync 文件同步教程:增量备份与常见注意事项

举报
GGBondHere 发表于 2026/10/27 23:34:58 2026/10/27
【摘要】 介绍 Linux rsync 的常用文件同步方法,包括本地增量备份、SSH 远程同步、目录末尾斜杠的区别、dry-run 预览及 delete 参数的注意事项。

前言

在 Linux 服务器上备份网站文件、迁移数据或者同步两个目录时,除了使用 cp、scp,还可以使用 rsync。

rsync 比较方便的地方在于,它可以识别源目录与目标目录之间的差异,后续同步通常不需要重新传输所有文件。特别是通过 SSH 在两台服务器之间传输数据时,可以减少不必要的流量。

下面介绍几个常用命令,以及实际使用中容易忽略的细节。

一、安装 rsync

Ubuntu、Debian 可以使用 APT 安装:

sudo apt update
sudo apt install rsync

检查版本:

rsync --version

如果需要通过 SSH 在两台服务器之间使用 rsync,一般需要两端都安装 rsync,并确保 SSH 可以正常连接。

二、本地目录同步

假设要把 /opt/app/ 目录中的文件备份到 /backup/app/:

rsync -avh /opt/app/ /backup/app/

常见参数含义:

  • -a:归档模式,递归复制并尽可能保留权限、时间戳等文件属性。
  • -v:显示较详细的执行信息。
  • -h:以比较容易阅读的形式显示文件大小。

第一次运行时,需要传输的文件可能比较多。再次运行时,rsync 通常会根据文件大小和修改时间判断哪些文件需要更新。

需要注意,默认情况下 rsync 并不是对每个文件都计算完整内容哈希进行比较。

三、源目录最后的斜杠很重要

这是 rsync 比较容易踩坑的地方。

下面两条命令看起来很像,但结果不同。

rsync -av /opt/app/ /backup/

这条命令把 app 目录内的内容同步到 /backup/。

而:

rsync -av /opt/app /backup/

这条命令会把 app 目录本身同步到 /backup/,结果通常是 /backup/app/。

简单来说,源目录末尾的 / 表示同步该目录里的内容,而不是把目录这一层也复制进去。

同步重要文件前,最好先确认目录结构是否符合预期。

四、通过 SSH 同步到另一台服务器

rsync 也可以通过 SSH 传输文件。

例如:

rsync -avh /opt/app/ user@192.0.2.10:/backup/app/

其中:

  • user 是远程服务器的用户名。
  • 192.0.2.10 是示例服务器地址,使用时替换成真实 IP。
  • /backup/app/ 是远程目标目录。

如果 SSH 不是默认的 22 端口,例如使用 2222,可以指定:

rsync -avh -e "ssh -p 2222" /opt/app/ user@192.0.2.10:/backup/app/

这里的 -e 用来指定远程 Shell 命令。

由于 rsync 通过 SSH 连接,因此也可以使用已经配置好的 SSH 密钥认证,不一定每次都输入服务器账户密码。

五、正式同步前先预览

如果不确定同步操作会修改哪些文件,可以加上 --dry-run:

rsync -avhn /opt/app/ /backup/app/

其中 -n 就是 --dry-run,表示模拟执行,不实际修改目标文件。

建议在首次同步大量数据、修改同步规则,或者使用删除参数前先运行一次,确认输出符合预期。

六、–delete 参数需要特别小心

默认情况下,rsync 会复制新增和发生变化的文件,但不会自动删除目标目录中多出来的文件。

如果想让目标目录与源目录保持一致,可以使用:

rsync -avh --delete /opt/app/ /backup/app/

这会删除目标同步范围内那些源目录已经不存在的文件。

例如,源目录中删除了一个旧配置文件,执行带 --delete 的同步后,目标目录中的对应文件也可能被删除。

因此,建议先执行:

rsync -avhn --delete /opt/app/ /backup/app/

检查模拟结果中准备删除的文件,再决定是否执行真正的同步。

尤其需要注意源目录和目标目录的填写顺序,不要弄反。

七、排除不需要同步的文件

有时不需要备份日志、缓存或临时文件,可以使用 --exclude。

例如:

rsync -avh --exclude='*.log' /opt/app/ /backup/app/

这样会排除匹配 *.log 的文件。

如果需要排除多个目录或文件,可以添加多个 --exclude 参数。

实际配置排除规则时,建议先使用 --dry-run 检查,避免漏掉需要备份的数据。

八、rsync 不等于完整的数据备份方案

虽然 rsync 很方便,但也有使用边界。

例如,直接同步正在运行中的数据库数据目录,可能复制到不一致的文件状态。数据库通常需要使用自身提供的备份工具,或者配合一致性快照。

另外,如果备份目标一直与源目录同步,并且使用 --delete,源目录误删的文件也可能在下一次同步时从备份中消失。

所以对于重要数据,建议保留独立的历史备份或快照,而不是只有一份实时同步副本。

总结

rsync 常用命令并不复杂,日常记住下面几种操作即可:

# 本地目录同步
rsync -avh /opt/app/ /backup/app/

# 预览同步
rsync -avhn /opt/app/ /backup/app/

# 通过 SSH 同步
rsync -avh /opt/app/ user@192.0.2.10:/backup/app/

# 预览删除操作
rsync -avhn --delete /opt/app/ /backup/app/

使用 rsync 时最重要的是确认源目录、目标目录、末尾斜杠以及是否启用了删除参数。

养成先预览、再执行的习惯,可以避免不少文件同步方面的误操作。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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