有没有办法rsync
只比较文件的时间戳,而忽略其内容?这包括忽略文件大小。只比较时间戳。只比较时间戳。什么都不考虑。
答案1
Rsync 无法仅使用时间戳来比较文件。它将总是不管怎样,比较文件大小,如果您指定,-c
它还会比较文件的校验和。
rsync 的整个目的是使一个文件树与另一个文件树匹配。如果一个文件树中的文件大小与另一个文件树中的相同文件大小不同,那么从逻辑上讲,它们必须不同。因此 rsync 会复制它。无论如何。
如果您想按照自己想要的方式复制文件,则必须采用不同的方法使用不同的工具。
如果您只想复制自已知日期(例如,上次复制文件)以来发生过更改的文件,则可以使用 find 的 -cnewer 标志。以下小脚本将查找自上次运行以来发生过更改的文件:
find /path/to/files -cnewer /tmp/lastSync
touch /tmp/lastSync
-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.
touch 命令将更新 /tmp/lastSync 的时间戳以反映脚本刚刚运行的事实,以便脚本的后续运行使用当前时间作为其时间基准。
然后可以使用 find 命令的输出来指定要使用您喜欢的任何方法(cp、scp 等)复制到目标的文件。
答案2
以下命令行完成该作业:
rsync -avu src/ dst/
来自有关 -u、--update 的手册页
这会强制 rsync 跳过目标上存在的任何文件,并且修改时间比源文件更新。(如果现有目标文件的修改时间等于源文件的修改时间,则如果大小不同,则会更新它。)