我通过 NTFS 格式化的外部硬盘将文件从一台计算机移动到另一台计算机。我有一个名为“library”的文件夹,其中包含许多 PDF。该文件夹包含相当多的符号链接,因为某些 PDF(即书籍或文章)属于多个类别(即文件夹)。我面临的问题是,我无法将文件保存到我的新计算机上,并且符号链接完好无损(即,没有取消引用它们)。我能够使用命令将文件夹从旧计算机复制到外部硬盘驱动器,并且符号链接完好无损cp -a
。但是,当我使用相同的命令将文件从硬盘驱动器复制到新计算机时,符号链接将被取消引用(即替换为它们引用的文件)。我也尝试过cp -r --preserve=all
,结果相同。那么我需要使用哪个命令才能将符号链接从外部硬盘驱动器获取到我的新计算机上?换句话说,为什么cp -a
在复制到外部硬盘驱动器时保留符号链接完整,而不是在另一个方向?我使用的是 Ubuntu 22.04,以防相关。
编辑:
我刚刚注意到,当我将硬盘驱动器连接到旧计算机(运行 Ubuntu 16.04)时,硬盘驱动器上的符号链接显示为链接并按原样工作(即,单击它们会打开引用的 PDF 文件) ),然而,当我将硬盘驱动器连接到新计算机(运行 Ubuntu 22.04)时,符号链接不会显示为链接(而是显示为 PDF 文件)并且不起作用(即,当单击它们时,文档查看器会发出错误消息File type unknown (application/octet-stream) is not supported
;也就是说,文档查看器尝试将它们作为 PDF 文件打开,而不是点击链接)。为什么两个版本的 Ubuntu 会有不同的行为?
NTFS 不能做你想做的事。
因此,您不能将内容直接存储在 NTFS 上。
您需要使用一个存档来放置要传输的文件。那么它就是一个档案。有多种选择(实际上,实际上,有两个):
tar
有效,而且安装更普遍,并且mksquashfs
允许更小的尺寸,并且可以在不解压的情况下实际使用内部文件。我写了一个答案,比较并说明了用法。tar
mksquashfs
遗憾的是,您别无选择,因为 NTFS 没有您想要的功能。