创建具有自己的本地数据的另一个目录的符号副本

创建具有自己的本地数据的另一个目录的符号副本

foo我有一个包含文件和目录的目录。我想创建一个新目录foo_0311,其中包含与(并在文件更改时看到更新)相同的文件foo,但允许执行touch foo_0311/a.txt而不是a.txt出现在foo.

我曾经有一种方法可以做到这一点,但是当我的 bash 历史记录消失时它就丢失了,并且我无法重建它。我记得它首先涉及创建foo_0311然后使用,ln如下所示:

mkdir foo_0311
ln ???

但我不记得它的选项。 IIRC,当我cd执行此操作并发出后进入目录时ls -l,文件没有显示为链接,但更改反映在原始foo目录中,而我在 中创建的新文件foo_0311不存在于foo.

答案1

您可以要求cp为您创建一个所谓的链接树:

cp -al foo foo_0311

-a递归复制所有内容,并-l为文件创建硬链接而不是复制它们。

如果foo_0311已经存在那么你应该使用

cp -al foo/* foo_0311

反而。

这会创建硬链接而不是符号链接,因此它们不会出现在->的输出中ls -l(但由于2第二列中的 ,您可以发现它们)。您在任一目录中创建的任何新文件都不会出现在另一个目录中,但您在一个目录中编辑的文件将出现在另一个目录中,只要它们实际上是就地修改的。 (像 Emacs 这样的编辑器创建新文件并将它们移动到位,这打破了这一点,尽管它实际上对于链接树非常有用,因为它允许某种形式的写时复制......)

答案2

从我看来——你试图创建一些目录,然后创建一个到该目录的符号链接......就像Windows机器在“程序文件”中包含主程序和一个图标(又名...... *nix 世界中的符号链接)。要实现这一点,您只需执行以下操作:

=>> mkdir  -p ~/home/folder/        "will make the directory for you if it doesn't exist"

=>> touch     ~/home/folder/file.txt  "will create the file"

现在为该文件创建一个符号链接,

ln -sf ~/home/folder/file.txt      ~/home/folder2/file.txt 

您可能需要使用 sudo 运行它,具体取决于创建符号链接的位置。您还可以查看 ln 的手册页手册页....你就完成了。

相关内容