rsync
是一个非常强大的 Linux 工具,常用于文件和目录的同步、备份和传输。它可以高效地同步本地和远程系统上的文件和目录,并且支持增量传输,仅同步发生变化的部分。rsync
支持压缩传输、删除多余文件、排除特定文件等多种功能,是日常运维、备份和迁移数据的重要工具。
一、rsync
原理
rsync
的核心原理是利用 差异算法(delta algorithm),它通过比较源和目标文件的差异,只同步变更的部分(而不是全量复制),从而大大提高了效率。
- 增量同步:
rsync
在同步时,不会将整个文件重新传输,而是只传输文件中有变化的部分。这是通过生成文件的校验和(checksum)来完成的,只有在校验和不同的情况下才会传输数据。 - 压缩传输:
rsync
支持使用-z
参数进行压缩,减少网络带宽的消耗。 - 支持远程同步:
rsync
可以通过 SSH、RSH 等协议同步本地和远程系统的数据。 - 删除冗余文件:
rsync
支持删除目标目录中源目录已经不存在的文件,常用参数是--delete
。 - 文件权限和属性:
rsync
支持保留文件的权限、时间戳、符号链接等属性。