继文件复制工具将在目标位置保留硬链接,我发现问题不在于将硬链接文件复制到另一个卷部分,而是源硬链接文件本身。
我花了很长时间才找到问题所在。首先让我展示一下正常情况:
这里是:
/tmp$ ls -l hl-demo
total 0
-rw-rw---- 2 tong tong 0 2019-08-03 22:32 abc
-rw-rw---- 2 tong tong 0 2019-08-03 22:32 abc-hl
-rw-rw---- 1 tong tong 0 2019-08-03 22:32 cde
-rw-rw---- 2 tong tong 0 2019-08-03 22:32 def
-rw-rw---- 2 tong tong 0 2019-08-03 22:32 def-hl
rsync -a --link-dest=/tmp/hl-demo /tmp/hl-demo/ hl-dup/
$ ls -l hl-demo
total 0
-rw-rw---- 4 tong tong 0 2019-08-03 22:32 abc
-rw-rw---- 4 tong tong 0 2019-08-03 22:32 abc-hl
-rw-rw---- 2 tong tong 0 2019-08-03 22:32 cde
-rw-rw---- 4 tong tong 0 2019-08-03 22:32 def
-rw-rw---- 4 tong tong 0 2019-08-03 22:32 def-hl
$ ls -l hl-dup/
total 0
-rw-rw---- 4 tong tong 0 2019-08-03 22:32 abc
-rw-rw---- 4 tong tong 0 2019-08-03 22:32 abc-hl
-rw-rw---- 2 tong tong 0 2019-08-03 22:32 cde
-rw-rw---- 4 tong tong 0 2019-08-03 22:32 def
-rw-rw---- 4 tong tong 0 2019-08-03 22:32 def-hl
$ stat hl-demo/abc hl-dup/abc-hl
File: hl-demo/abc
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 81dh/2077d Inode: 1223453 Links: 4
Access: (0660/-rw-rw----) Uid: ( 9999/ tong) Gid: ( 1001/ tong)
Access: 2019-08-03 22:32:27.000000000 -0400
Modify: 2019-08-03 22:32:27.000000000 -0400
Change: 2019-08-03 22:37:56.000000000 -0400
Birth: -
File: hl-dup/abc-hl
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 81dh/2077d Inode: 1223453 Links: 4
Access: (0660/-rw-rw----) Uid: ( 9999/ tong) Gid: ( 1001/ tong)
Access: 2019-08-03 22:32:27.000000000 -0400
Modify: 2019-08-03 22:32:27.000000000 -0400
Change: 2019-08-03 22:37:56.000000000 -0400
Birth: -
hl-dup
一切正常,创建了第二个文件夹,硬链接第一个文件夹中的所有文件hl-demo
。一切正常。
现在,让我们rsync
用一个额外的 重新执行上面的命令-R
,当然,其他一切都保持不变rm -rf hl-dup
。结果应该是一样的——第二个文件夹将所有文件硬链接到第一个文件夹,对吗?让我们看看:
rm -rf hl-dup
$ ls -l hl-demo
total 0
-rw-rw---- 2 tong tong 0 2019-08-03 22:32 abc
-rw-rw---- 2 tong tong 0 2019-08-03 22:32 abc-hl
-rw-rw---- 1 tong tong 0 2019-08-03 22:32 cde
-rw-rw---- 2 tong tong 0 2019-08-03 22:32 def
-rw-rw---- 2 tong tong 0 2019-08-03 22:32 def-hl
rsync -a --link-dest=/tmp/hl-demo /tmp/hl-demo/ hl-dup/ -R
$ ls -l hl-demo
total 0
-rw-rw---- 2 tong tong 0 2019-08-03 22:32 abc
-rw-rw---- 2 tong tong 0 2019-08-03 22:32 abc-hl
-rw-rw---- 1 tong tong 0 2019-08-03 22:32 cde
-rw-rw---- 2 tong tong 0 2019-08-03 22:32 def
-rw-rw---- 2 tong tong 0 2019-08-03 22:32 def-hl
$ ls -l hl-dup/tmp/hl-demo/
total 0
-rw-rw---- 1 tong tong 0 2019-08-03 22:32 abc
-rw-rw---- 1 tong tong 0 2019-08-03 22:32 abc-hl
-rw-rw---- 1 tong tong 0 2019-08-03 22:32 cde
-rw-rw---- 1 tong tong 0 2019-08-03 22:32 def
-rw-rw---- 1 tong tong 0 2019-08-03 22:32 def-hl
$ stat hl-demo/abc hl-dup/tmp/hl-demo/abc-hl
File: hl-demo/abc
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 81dh/2077d Inode: 1223453 Links: 2
Access: (0660/-rw-rw----) Uid: ( 9999/ tong) Gid: ( 1001/ tong)
Access: 2019-08-03 22:32:27.000000000 -0400
Modify: 2019-08-03 22:32:27.000000000 -0400
Change: 2019-08-03 22:41:55.000000000 -0400
Birth: -
File: hl-dup/tmp/hl-demo/abc-hl
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 81dh/2077d Inode: 1223498 Links: 1
Access: (0660/-rw-rw----) Uid: ( 9999/ tong) Gid: ( 1001/ tong)
Access: 2019-08-03 22:43:34.000000000 -0400
Modify: 2019-08-03 22:32:27.000000000 -0400
Change: 2019-08-03 22:43:34.000000000 -0400
Birth: -
即,rsync
用额外的命令重做第一个命令-R
将改变一切 - 第二个文件夹不再将所有文件硬链接到第一个文件夹。
-R
我原来的设置是使用和不使用混合完成的-R
,所以我没有注意到使用时硬链接消失了-R
。
- 有人可以确认一下吗?
-R
在第二种情况下,何时需要创建硬链接?
PS.设置:
touch abc def cde
ln abc abc-hl
ln def def-hl