为了支持不同大陆的另一个小组,我从我的 Fedora 21 机器到 cifs 共享运行 rsync。共享的内容最初是在该团体的一些成员在城里访问时复制到硬盘上的。
rsync是这样的:
rsync --no-owner \
--no-group \
--verbose \
--recursive \
--links \
--itemize-changes \
--times \
--omit-dir-times \
<source>/ <destination>
从那时起,rsync 开始正常,但总是发现许多因时间过期而重新传输的文件。具体来说:
f..t...... <file>
我无意中发现,虽然我指定了--times,但它只更新修改类型,而不更新更改时间。使用“stat”的本地文件如下所示:
File: <source file>
Size: 214 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 15211788 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 537/ build) Gid: ( 501/ toddb)
Access: 2017-01-23 07:08:40.724417237 -0800
Modify: 2010-08-20 21:57:32.000000000 -0700
Change: 2017-01-13 07:17:19.745921010 -0800
rsync 运行后,目标文件如下所示:
File: <dest file>
Size: 214 Blocks: 16 IO Block: 16384 regular file
Device: 3ah/58d Inode: 288918155034656 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 531/ toddb) Gid: ( 501/ toddb)
Access: 2017-01-23 07:08:40.000000000 -0800
Modify: 2010-08-20 21:57:32.000000000 -0700
Change: 2010-08-20 21:57:32.000000000 -0700
请注意,目标的修改和更改时间相同。这似乎是正确的,但如果我再次运行 rsync,则会复制相同的文件。于是一时兴起就用了这个...
touch -r <source> <destination>
...更新 rsync 报告的所有文件正在更新。现在,当我跑步时,有两件事值得注意。 (a) 统计结果似乎相同,(b) rsync 不再重新传输文件。
那么,“touch”可能会触及哪些 rsync 不会触及的内容呢? (并且应该)