根据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