正如这个问题的答案所示, 使用 cp -l 或 ln 进行硬链接有区别吗?
为 cp 命令创建 -l 选项的目的是递归地硬链接目录(的内容)。 -s 选项是对应的,创建软链接而不是硬链接,但它似乎不能递归使用。
任何尝试这样做都会导致错误消息:
cp: `source_dir/source_file': can make relative symbolic links only in current directory
也许这取决于发行版。在 Ubuntu 12.04 中,这就是结果。仅当原始文件和链接位于同一目录中时才有效。
也许语法不正确?
cp -rs target_directory destination_directory
是我用过的。
例子:
$ ls sourcedir/
-rw-rw---- 1 user group 1123 Jan 8 23:10 source_file
$ cp -rs sourcedir/ targetdir/
cp: `targetdir/sourcedir/source_file': can make relative symbolic links only in current directory
答案1
给定源目录的绝对路径:
cp -rs $PWD/sourcedir/ targetdir/
中的符号链接targetdir
将包含 的绝对路径sourcedir
。
否则,如果它只是创建一个符号链接,它将创建类似以下内容的内容:
targetdir/filename -> sourcedir/filename
但这不是查找原始文件的正确相对路径,它应该是:
targetdir/filename -> ../sourcedir/filename
cp
不会尝试弄清楚源目录和目标目录如何相互关联,以便它可以添加适当数量的../
前缀。