rsync 切换到只比较时间戳

4 rsync

有没有办法rsync只比较文件的时间戳,而忽略它们的内容?这包括忽略文件大小。只是时间戳。除了时间戳什么都没有。

Maj*_*nko 5

Rsync 不能仅使用时间戳来比较文件。无论如何,它将始终比较文件大小,如果您指定,-c它还将比较文件的校验和。

rsync 的全部意义在于使一个文件树与另一个文件树匹配。如果一棵树中的文件与另一棵树中的同一个文件的大小不同,那么它们在逻辑上必须不同。所以 rsync 会复制它。不管。

如果您想以您想要的方式复制文件,则必须使用不同的工具采用不同的方法。

如果您只想复制自已知日期(例如,上次复制文件)以来已更改的文件,则可以使用 find 的 -cnewer 标志。以下小脚本将查找自上次运行以来已更改的文件:

find /path/to/files -cnewer /tmp/lastSync
touch /tmp/lastSync
Run Code Online (Sandbox Code Playgroud)

-cnewer 将文件的修改时间与指定文件的修改时间进行比较(本例中为 /tmp/lastSync):

-cnewer file
   File's  status  was last changed more recently than file was modified.  
   If file is a symbolic link and the -H option or the -L option is in 
   effect, the status-change time of the file it points to is always used.
Run Code Online (Sandbox Code Playgroud)

touch 命令将更新 /tmp/lastSync 的时间戳以反映脚本刚刚运行的事实,以便脚本的后续运行使用当前时间作为时间基准。

然后可以使用 find 命令的输出指定要使用您喜欢的任何方法(cp、scp 等)复制到目标的文件。