关于 cp --preserve=links 的信息

Mat*_*att 7 hard-link cp symlink

我试图了解cp --preserve=links单独使用时的作用,从我的测试来看,它似乎正常复制了一个普通文件并取消了符号链接的引用,但它似乎与 cp -L 在单个文件上使用时具有相同的效果。

这是真的还是我遗漏了什么?

xhi*_*nne 11

--preserve=links选项不是指符号链接,而是指硬链接。它要求cp保留正在复制的两个或多个文件之间的任何现有硬链接。

$ date > file1
$ ln file1 file2
$ ls -1i file1 file2
6034008 file1
6034008 file2
Run Code Online (Sandbox Code Playgroud)

可以看到两个原始文件是硬链接的,它们的inode号是6034008。

$ mkdir dir1
$ cp file1 file2 dir1
$ ls -1i dir1
total 8
6035093 file1
6038175 file2
Run Code Online (Sandbox Code Playgroud)

您现在可以看到,没有--preserve=links它们的副本有两个不同的 inode 编号:两者之间不再有硬链接。

$ mkdir dir2
$ cp --preserve=links file1 file2 dir2
$ ls -1i dir2
total 8
6089617 file1
6089617 file2
Run Code Online (Sandbox Code Playgroud)

现在您可以看到,使用--preserve=links,这两个副本仍然是硬链接的,但是它们的 inode 编号是 6089617,这与原始文件的 inode 编号不同(与会cp --link做的相反)。