1. 介绍
什么是 rsync?
rsync 是一个命令行工具,旨在实现快速且高效的文件和目录同步与复制。它在 Linux 和类 Unix 系统上被广泛使用,凭借其增量传输算法,只传输源和目标之间的差异。这使得即使处理大量文件也能保持高效。在 Ubuntu 以及许多其他 Linux 发行版中,rsync 通常默认已安装,是系统管理员和开发者必备的工具。
在 Ubuntu 上使用 rsync 的好处
在 Ubuntu 上,rsync 对日常文件备份和目录同步任务非常有效。无需依赖图形界面,只需在终端输入几条命令,即可实现本地和远程的快速文件传输。
它在以下场景中特别有用:
- 定期备份到外部硬盘或 NAS 设备
- 开发过程中同步项目文件夹
- 将文件部署到远程服务器
- 通过文件镜像提升可用性
rsync 与其他命令的区别
与 cp 命令相比,rsync 只传输源和目标之间的差异,显著减少处理时间。与 scp 相比,rsync 在出错后支持断点续传,并且可以灵活控制带宽。此外,它还能保留文件属性,如所有者、权限和时间戳,这是一大优势。
本文的目的
本文阐述了如何在 Ubuntu 环境中安装并高效使用 rsync,通过实用的命令示例和真实案例帮助读者上手。为了让初学者能够顺利入门,我们还会介绍 GUI 工具以及在学习 rsync 过程中可能遇到的故障排除技巧。
2. 在 Ubuntu 上安装 rsync
检查 rsync 是否已预装
在大多数 Ubuntu 环境中,rsync 已默认安装。可以使用以下命令检查其可用性:
rsync --version
如果显示版本信息,则说明 rsync 已安装并可直接使用。
未安装时的 rsync 安装步骤
如果出现 “command not found” 或 “rsync: command not found” 等提示,请按以下步骤进行安装:
- 更新软件包列表:
sudo apt update
- 安装 rsync:
sudo apt install rsync
- 验证安装:
rsync --version
如果出现版本信息,则说明安装成功。
是否需要通过 Snap 或其他方式安装?
在 Ubuntu 上,推荐使用 APT 安装 rsync。虽然也有 Snap 包,但 APT 版本通常足够且在稳定性和兼容性方面更适合常规使用场景。除非有特殊需求,否则首选 APT 安装方式。
安装注意事项
- 在较旧的 Ubuntu 版本上,可能需要先更新软件源。
- 需要 root 权限,请务必使用
sudo。 - 网络不稳定可能导致安装错误,建议使用稳定的网络连接。
3. rsync 基本用法
基本 rsync 语法
rsync 命令语法简洁却极具灵活性。基本形式如下:
rsync [options] source destination
例如,将 /home/user/documents/ 的内容复制到 /mnt/backup/:
rsync -av /home/user/documents/ /mnt/backup/
该命令使用了以下选项:
-a:归档模式(保留目录结构、权限、所有者等)-v:详细输出(显示被复制的文件)
末尾斜杠的行为
在 rsync 中,源路径是否带有末尾斜杠会影响复制行为:
/home/user/documents/(带斜杠) → 仅复制其内部内容。/home/user/documents(不带斜杠) → 连同目录本身一起复制。
这是一个关键的 rsync 特定行为,应根据您的目标适当使用。
常用选项
| Option | Description |
|---|---|
-a | Archive mode (recursive and preserves attributes) |
-v | Displays detailed transfer output |
-n | Dry run (shows what would happen without executing) |
--progress | Shows transfer progress |
--delete | Deletes files in the destination that no longer exist in the source |
在执行前预览操作
要在实际传输文件之前检查 rsync 将执行的操作,请使用 --dry-run 选项:
rsync -av --dry-run /home/user/documents/ /mnt/backup/
这有助于防止意外的数据丢失。
处理隐藏文件
默认情况下,rsync 会包括隐藏文件(以 . 开头的文件),从而同步配置文件和环境设置。
4. 与远程服务器同步
通过 SSH 进行远程同步
rsync 最大的优势之一是能够通过 SSH 与远程服务器同步文件,确保安全的数据传输。
rsync -avz source user@remote_host:destination
示例:
rsync -avz /home/user/documents/ user@example.com:/var/www/backup/
-z在传输过程中启用压缩。user@host指定 SSH 登录。
首次连接和 SSH 密钥认证
首次连接时,系统可能会要求确认主机真实性。如果正确,请输入 “yes”。
为了频繁使用,建议使用 SSH 密钥认证以避免输入密码:
ssh-keygen -t rsa
ssh-copy-id user@example.com
指定自定义 SSH 端口
如果远程服务器使用非默认的 SSH 端口,请使用 -e 指定:
rsync -avz -e "ssh -p 2222" /home/user/documents/ user@example.com:/var/www/backup/
双向同步的重要注意事项
rsync 仅执行单向同步。若需要真正的双向同步,请考虑使用 unison 等工具。
5. 实用 rsync 选项与实际示例
超出基础的高级选项
–delete:删除源中不存在的文件
rsync -av --delete /home/user/source/ /mnt/backup/
在使用此选项前,请始终使用 --dry-run 进行测试。
–exclude:排除特定文件或目录
rsync -av --exclude '*.log' --exclude 'node_modules' /project/ /backup/
–bwlimit:带宽限制
rsync -av --bwlimit=5000 /data/ user@remote:/data/
实际使用案例
使用 rsync 进行备份
rsync -a --delete /home/user/ /media/usb/backup/
使用 cron 自动化
0 2 * * * rsync -a /home/user/ /mnt/backup/ >> /var/log/rsync.log 2>&1
在灵活性与效率之间取得平衡
rsync 将卓越的灵活性与高传输效率相结合,是实现安全、精确文件同步的强大工具。
6. GUI 工具:Grsync
推荐给不熟悉命令行的用户
Grsync 是 rsync 的图形前端,允许用户以可视化方式配置和执行同步任务。
在 Ubuntu 上安装 Grsync
sudo apt update
sudo apt install grsync

基本用法
- 指定源路径和目标路径
- 通过复选框选择 rsync 选项
- 配置排除模式
- 安全地执行干运行
基于配置文件的管理
Grsync 允许将配置保存为配置文件,便于管理多个备份或同步任务。
优缺点
| Pros | Cons |
|---|---|
| Intuitive GUI, no commands required | Some advanced options are not available |
| Easy to understand options | Less detailed output than terminal usage |
| Safe for beginners | Less flexible than direct rsync usage |
7. 常见问题与解决方案
文件权限未保留
sudo rsync -a /source/ /destination/
符号链接未按预期处理
- 保留链接:使用
-a - 复制实际文件:使用
--copy-links
“Permission denied” 错误
sudo rsync -a /source/ /destination/
远程同步期间的连接错误
- 验证 SSH 连接
- 检查目标路径和权限
“Argument list too long” 错误
- 使用 include/exclude 规则
- 将同步拆分为更小的批次
8. 常见问答
Q1. 如何保留所有权和权限?
A. 使用 -a 选项。
Q2. 如何排除特定文件?
A. 使用 --exclude。
Q3. 如何限制带宽使用?
A. 使用 --bwlimit。
Q4. 我可以在执行前预览操作吗?
A. 使用 --dry-run。
Q5. 隐藏文件会被复制吗?
A. 是的,默认会复制。
Q6. rsync 与 scp 有何区别?
A. rsync 支持增量传输和断点续传,使其更高效。
9. 总结
本文介绍了 rsync 的安装、基础和高级用法、远程同步、GUI 工具、故障排除以及常见问题。
为什么 rsync 至关重要
- 快速的增量传输
- 保留权限和所有权
- 安全的远程同步
- 高度可定制,拥有众多选项
- 支持通过 cron 自动化
- 对初学者友好,提供 GUI 工具
rsync 是 Linux 用户的基础工具。通过掌握其基础并逐步应用高级选项,您可以实现专业级的文件管理和备份工作流。


