rsync(Remote Sync)是一个用于在不同系统之间同步文件和目录的快速、多功能的工具。它通过差异比较和复制来最小化数据传输量,从而实现高效的文件同步。rsync 最初是由 Andrew Tridgell 开发的,用于在 Unix-like 系统之间同步文件,但现在已经被广泛移植到许多不同的操作系统中。
主要特点:
-
增量传输:rsync 使用一种特殊的算法,它可以检测源和目标之间文件的差异,并只传输发生变化的部分。这使得在同步大型文件和目录时能够减少传输的数据量,从而提高了效率。
-
支持本地和远程同步:rsync 不仅可以在本地文件系统之间同步文件,还可以通过 SSH 等协议在不同系统之间同步。这使得在不同服务器之间进行文件同步变得非常方便。
-
复制链接、权限和时间戳:rsync 能够保持文件的权限、所有者、时间戳等元数据,并且可以复制符号链接。
-
多种同步模式:rsync 支持许多不同的同步模式,包括从源到目标的单向同步、双向同步以及仅删除目标中不存在于源中的文件等。
-
部分传输:如果传输中断,rsync 能够在恢复时从中断的地方继续传输,而不需要重新传输整个文件。
由于 rsync 支持增量,比如使用 rsync -avut origin target
- -a: --archive 的缩写,它表示使用归档模式进行同步。归档模式会保留文件的权限、所有者、时间戳等元数据,这在文件备份和同步时非常有用。
- -v: --verbose 的缩写,它表示在终端显示详细的输出,包括哪些文件正在复制、复制进度等信息。
- -u: --update 的缩写,它表示仅在源文件更新时间晚于目标文件时才进行复制。这是一个增量复制的方式,只复制发生变化的文件。
-a 选项相当于以下几个选项的组合: -rlptgoD: 这些选项分别代表 --recursive、--links、--perms、--times-、--group、--owner 和 --devices,用于保留文件的目录结构、复制符号链接、保留权限、保留时间戳、保留文件所属组、保留文件所有者以及复制设备文件(块设备、字符设备)。