rsync
rsync: remote sync,远程同步,用于在本地机器及远程机器之间同步数据。
对于本地机器之内,同步数据使用cp即可。
对于本地与远程,使用scp即可。
但上面两个命令同步数据时一般是无脑覆盖文件,而rsync则不会直接覆盖以前的数据(如果数据已经存在),而是先判断已经存在的数据和新数据的差异,只有数据不同时才会把不相同的部分覆盖。
怎么判定文件有改动呢?默认是检查文件大小和最后修改时间是否一致,如果一致则认为无变动,不会传输该文件,如果不一致则同步。
对于想让两台机器某个目录一致的需求来说,如果目录每天新增数据,则相对scp来说,可以节省大量带宽。
因为它用少量的文件信息换取了大量文件内容的传输。
常用参数
以本地同步文件为例,远程同步只需要在本地同步的基础上加上远程主机的前缀即可,见下文介绍。
初次使用rsync可能会有些疑惑,有时想同步文件夹,却被新创建的目录迷惑,如下:
rsync -r a b
-r参数表示递归目录,与cp中一致。如果不加-r,不会同步任何东西:skipping directory a。
想要把a目录下所有文件同步到b目录下,结果却把a连同目录同步到了b:
% tree
.
└── a
└── a.csv
1 directory, 1 file
% rsync -rv a b
sending incremental file list
created directory b
a/
a/a.csv
sent 125 bytes received 63 bytes 376.00 bytes/sec
total size is 4<

本文介绍了rsync命令在远程同步数据时的特性,如何避免覆盖、增量传输以及常用参数如-a、--delete和-exclude。重点讲解了如何正确使用目录后缀和配合-a参数实现高效同步,并提到了rsync与scp在带宽利用上的区别及其适用场景。
1267

被折叠的 条评论
为什么被折叠?



