如何复制文件和该文件的符号链接?

时间:2019-04-02 19:47:19

标签: bash macos unix symlink

我正在尝试复制一个包含文本文件和指向文本文件的符号链接的文件夹。 如何实现文件夹1的以下重复:

|---- Folder1
|     |---- file1.txt
|     |---- symlink_to_file1.txt

现在我要复制此文件夹以使其成为

|---- Folder1_copy
|     |---- file1_copy.txt
|     |---- symlink_to_file1_copy.txt

通常,名称不会更改为包含“ _copy”,我只是添加了此名称以使示例更清楚。

当前,如果我的文件夹结构是“ ctrl + c”,“ ctrl + v”,则会得到:

|---- Folder1_copy
|     |---- file1_copy.txt
|     |---- symlink_to_file1.txt

以上解决方案:

rsync -av Folder1/* Folder1_copy/

但是在复制的情况下不起作用

|---- Folder1
|     |---- Nested_folder1
|     |     |---- file1.txt
|     |---- Nested_folder2
|     |     |---- Nested_folder3
|     |     |     |---- symlink_to_file1.txt

在上述文件结构上运行rsync -av Folder1/* Folder1_copy/后,新的symlink_to_file1_copy.txt符号链接仍将指向原始file1.txt

1 个答案:

答案 0 :(得分:0)

尝试一下:rsync -av Folder1/* Folder1_copy/
我自己对此进行了测试,似乎可以实现所需的设置。注释中建议的第一种解决方案不会保留链接,而第二种解决方案会将整个目录Folder1的副本放入Folder1_copy中。

重要警告:对于Folder1中复制到Folder1_copy的任何符号链接,它们实际上指向Folder1_copy中其他复制的文件,而不是Folder1中的原始文件,需要创建这些符号链接以根据其相对文件夹1中的路径,而不是绝对路径。