Rsync 工具
rsync 是一个快速且非常灵活的文件复制工具,最初由 Andrew Tridgell 和 Paul Mackerras 开发。它被广泛用于在本地和远程系统之间同步文件和目录,同时支持增量传输,这意味着只有更改过的文件部分才会被传输,从而大大提高了效率并节省了带宽。
主要特性
- 增量传输:仅传输源文件和目标文件之间的差异,极大地减少了数据传输量
- 压缩传输:可以对传输的数据进行压缩以减少网络流量 (-z 选项)
- 安全传输:通过SSH协议安全地传输数据 (-e ssh 选项)
- 保留属性:可以保留符号链接、权限、时间戳、组信息等 (-a 归档模式)
- 排除规则:允许指定哪些文件或目录不应包含在同步中 (–exclude 选项)
- 删除功能:可以配置为删除目标位置不存在于源位置的文件 (–delete 选项)
注意事项
- 路径末尾斜杠:注意源路径末尾是否有斜杠,这会影响 rsync 如何处理文件夹的内容。例如,/source/folder/ 与 /source/folder 的处理方式不同。
- 测试运行:在执行实际同步之前,可以先使用 -n 或 --dry-run 选项来模拟同步过程,查看将要进行的操作而不实际执行任何更改。
- 性能优化:对于大文件或大量小文件,调整块大小(–block-size)或其他参数可能会提高性能。
- rsync 是一个非常强大和多功能的工具,适用于各种场景下的文件和目录同步需求。掌握其基本用法和高级选项可以帮助用户高效地管理数据备份和迁移任务。
基本用法
语法
rsync [选项] 源 目标
示例
# 本地文件同步:将本地 /source/folder/ 目录同步到 /destination/folder/
rsync -av /source/folder/ /destination/folder/
# 远程文件同步:使用 SSH 将本地文件夹同步到远程服务器上的指定目录, 这里 -e ssh 指定了使用SSH作为传输协议,-z 表示启用压缩
rsync -avz -e ssh /source/folder/ user@remote:/destination/folder/
# 排除特定文件或目录:在同步过程中排除某些文件或目录(如 .git 文件夹)
rsync -av --exclude='.git' /source/folder/ /destination/folder/
# 删除目标位置不存在的文件:如果您希望目标位置也反映源位置的删除操作,可以添加 --delete 选项
rsync -av --delete /source/folder/ /destination/folder/