使用cp
命令的-d
和-P
选项在创建符号链接的副本时,感觉效果一样,这两个选项的区别在哪里?
root@SEBIA:/home/meerkat# ls -l prog*
-rwxrwxr-x 1 meerkat meerkat 15960 Jun 2 23:12 prog
lrwxrwxrwx 1 root root 4 Jun 8 22:25 prog1 -> prog
root@SEBIA:/home/meerkat# cp -d prog1 prog2 && cp -P prog1 prog3
root@SEBIA:/home/meerkat# ls -l prog*
-rwxrwxr-x 1 meerkat meerkat 15960 Jun 2 23:12 prog
lrwxrwxrwx 1 root root 4 Jun 8 22:25 prog1 -> prog
lrwxrwxrwx 1 root root 4 Jun 8 22:35 prog2 -> prog
lrwxrwxrwx 1 root root 4 Jun 8 22:35 prog3 -> prog
-P 是 --no-dereference
-d 是 --no-dereference --preserve=links
所以 -d 比 -P 多了 --preserve=links。根据 unix.stackexchange上的这个回答,--preserve=links 不是针对软链接的,而是硬链接。就是一次 cp 的源文件中,如果有两个互为硬链接,那么在拷贝结果中,它使也互为硬链接。
file1, file2 inode 相同。(互为硬链接)
拷贝后,它们的 inode 不再相同。
加上 --preserve=links ,拷贝后它们的 inode 保持相同(互为硬链接)。注意它们与源文件的 inode 是不同的,也就是它们不是源文件原硬链接。