Symlink

關於 cp –preserve=links 的資訊

  • August 18, 2017

我試圖了解cp --preserve=links單獨使用時會發生什麼,從我的測試來看,它似乎可以正常複製普通文件並取消引用符號連結,但在單個文件上使用時,它似乎與 cp -L 具有相同的效果。

這是真的還是我錯過了什麼?

--preserve=links選項不是指符號連結,而是指硬連結。它要求cp保留正在複製的兩個或多個文件之間的任何現有硬連結。

$ date > file1
$ ln file1 file2
$ ls -1i file1 file2
6034008 file1
6034008 file2

可以看到兩個原始文件是硬連結的,它們的inode號是6034008。

$ mkdir dir1
$ cp file1 file2 dir1
$ ls -1i dir1
total 8
6035093 file1
6038175 file2

您現在可以看到,沒有--preserve=links它們的副本有兩個不同的 inode 編號:兩者之間不再有硬連結。

$ mkdir dir2
$ cp --preserve=links file1 file2 dir2
$ ls -1i dir2
total 8
6089617 file1
6089617 file2

您現在可以看到,使用--preserve=links,兩個副本仍然是硬連結的,但它們的 inode 編號是 6089617,這與原始文件的 inode 編號不同(與cp --link之前所做的相反)。

引用自:https://unix.stackexchange.com/questions/386979