qrsync是在rsync基础上进行的封装,所以算法也是基于rsync 对于rsync,同步过程如下 建立网络链路并校验权限 发送方传输本地文件列表,包括目录结构、文件名、每个文件的修改时间和大小 如果指定-c, --checksum参数,则会包含每个文件的checksum(一种hash) 如果指定-p, --perms参数,则会包含每个文件的owner,group以及权限 接收方一一对比,如过存在某项属性有和本地文件有差异的,则放入传输列表 针对需要传输的文件列表,采用rsync算法计算出文件中差异的部分,进行尽可能最小化的传输 因此默认情况下,判断一个文件是否需要传输,是基于修改时间和文件大小,如果二者都一样,则会直接跳过这个文件。这样的算法,虽然简单粗暴,但是对I/O及CPU的消耗微乎其微,也基本上能适应大部分场景。这样的算法会忽略那些通过非正常手段修改了文件内容,但是时间戳和文件大小都没有变化的文件,因此rsync提供-c参数进行更严格的对比。 针对题主的情况,可以加上--size-only参数,这样的话,针对同一个文件(路径),如果文件大小保持一致,只是修改时间不同,也会直接跳过,不进行传输。
qrsync
是在rsync
基础上进行的封装,所以算法也是基于rsync
对于
rsync
,同步过程如下目录结构
、文件名
、每个文件的修改时间
和大小
-c, --checksum
参数,则会包含每个文件的checksum(一种hash)-p, --perms
参数,则会包含每个文件的owner,group以及权限传输列表
rsync算法
计算出文件中差异的部分,进行尽可能最小化的传输
因此默认情况下,判断一个文件是否需要传输,是基于
修改时间
和文件大小
,如果二者都一样,则会直接跳过这个文件。这样的算法,虽然简单粗暴,但是对I/O及CPU的消耗微乎其微,也基本上能适应大部分场景。这样的算法会忽略那些通过非正常手段
修改了文件内容,但是时间戳和文件大小都没有变化
的文件,因此rsync提供-c
参数进行更严格的对比。针对题主的情况,可以加上
--size-only
参数,这样的话,针对同一个文件(路径),如果文件大小
保持一致,只是修改时间
不同,也会直接跳过,不进行传输。