修改时间不同时 Rsync 硬链接

修改时间不同时 Rsync 硬链接

我有一个大型远程目录A和本地目录B,它们的内容几乎相同,尽管许多修改时间可能因复制文件等而发生变化。我想创建一个C与 内容相同的本地目录A,只要内容相同就硬链接到 中的文件B。我不关心修改时间是否相同。

这可能吗rsync

对于测试用例,我有以下本地设置(我假设A在远程服务器上时行为不会改变):

[Compputer:/tmp] % cat A/a B/a
foo
foo

[Compputer:/tmp] % rsync -rIv --link-dest=$PWD/B/ /tmp/A/ /tmp/C  
building file list ... done
created directory /tmp/C
./
a
b

sent 169 bytes  received 71 bytes  480.00 bytes/sec
total size is 8  speedup is 0.03

[Compputer:/tmp] % ls -lT A B C
A:
total 16
-rw-r--r--  1 ken  wheel  4 May 28 00:01:15 2016 a
-rw-r--r--  1 ken  wheel  4 May 28 00:01:22 2016 b

B:
total 8
-rw-r--r--  1 ken  wheel  4 May 28 00:01:34 2016 a

C:
total 16
-rw-r--r--  1 ken  wheel  4 May 28 20:46:31 2016 a
-rw-r--r--  1 ken  wheel  4 May 28 20:46:31 2016 b

请注意,这a不是硬链接。

答案1

找到了一个解决方案:-c交换机请求对每个文件进行校验和比较。这样可以忽略上次修改日期,并且rsync(通常)可以更好地检测相同的文件(代价是读取每个文件,但仍然不需要通过网络传输)。

[Compputer:/tmp] % rsync -rcv --link-dest=$PWD/B/ A/ C
building file list ... done
created directory C
./
b

sent 150 bytes  received 48 bytes  396.00 bytes/sec
total size is 8  speedup is 0.04
[Compputer:/tmp] % ls -l A B C
A:
total 16
-rw-r--r--  1 ken  wheel  4 May 28 00:01 a
-rw-r--r--  1 ken  wheel  4 May 28 00:01 b

B:
total 8
-rw-r--r--  2 ken  wheel  4 May 28 00:01 a

C:
total 16
-rw-r--r--  2 ken  wheel  4 May 28 00:01 a
-rw-r--r--  1 ken  wheel  4 May 30 21:33 b

2文件前面aB/C/表示它们是硬链接的。

相关内容