首页 > 解决方案 > 如何复制文件和指向该文件的符号链接?

问题描述

我正在尝试复制一个包含文本文件和指向文本文件的符号链接的文件夹。如何实现文件夹 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

标签: bashmacosunixsymlink

解决方案


试试这个:rsync -av Folder1/* Folder1_copy/
我自己测试了这个,这似乎实现了你想要的设置。评论中建议的第一个解决方案不保留链接,而第二个解决方案将整个目录 Folder1 的副本放入 Folder1_copy。

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


推荐阅读