rsync -Wav和硬链接

根据rsync命令 – MAN页面:

-a,–archive这相当于-rlptgoD。 这是一个快速的方式来说你想要recursion,并希望保存几乎所有的东西(-H是一个显着的遗漏)。 上述等价的唯一例外情况是当指定了–files-from时,在这种情况下不指定-r。

请注意,-a不保留硬链接,因为查找多个链接的文件是昂贵的。 您必须单独指定-H。

似乎我们必须使用-H标志来复制硬链接(realy?)

但根据我的testing,即使我不使用rsync命令中的-H标志,硬链接从本地目录成功复制到其他机器? (很奇怪 ?)

例如

ls -ltr

-rw-r--r-- 1 root root 0 Jan 20 15:06 test.file.hard.link -rw-r--r-- 1 root root 0 Jan 20 15:06 test.file rsync -Wav --progress /var/tmp/Backup_test_for_hard_link node1:/var/tmp 

在/ var / tmp下的node1中,我看到硬链接文件:

  -rw-r--r-- 1 root root 0 Jan 20 15:06 test.file.hard.link -rw-r--r-- 1 root root 0 Jan 20 15:06 test.file 

请指教如何可以?

这两个不是硬链接,因为如果链接确实是链接的话链接数将会是2。

另外,如果一个文件存在两个硬链接,而你不使用-H选项,rsync只会创build两个文件副本,而-H选项的额外(昂贵的)逻辑将会识别出这两个文件实际上只有一个,并相应地重新创build它们。

为了说明这一点:

源代码目录(注意链接计数2):

 total 0 -rw-r--r-- 2 root root 0 Jan 20 13:37 myfile -rw-r--r-- 2 root root 0 Jan 20 13:37 myfile2 

rsync -Wav --progress t1/* t2之后的目标目录(注意链接数量1):

 total 0 -rw-r--r-- 1 root root 0 Jan 20 13:37 myfile -rw-r--r-- 1 root root 0 Jan 20 13:37 myfile2 

rsync -WavH --progress t1/* t3之后的目标目录(注意链接数目是2):

 total 0 -rw-r--r-- 2 root root 0 Jan 20 13:37 myfile -rw-r--r-- 2 root root 0 Jan 20 13:37 myfile2