如何将硬链接移动到另一个磁盘

如何将硬链接移动到另一个磁盘

如果我们在磁盘上有一个文件并创建指向它的硬链接,那么我们就有对同一数据的两个引用。如果一个链接被删除,它不会影响另一个链接,因为它直接指向数据。

如果我有两个指向文件 ABC 的链接(A 和 B),并且我将链接 A 移动到另一个磁盘,那么我将拥有数据的两个副本。链接A将指向新磁盘上的数据,链接B将指向旧磁盘上的数据。

如果我想将链接 A 和 B 移动到新磁盘,如何才能做到这一点而不最终在新磁盘上拥有两个数据副本?

答案1

rsync能够为您复制硬链接。检查-H选项:

-H, --hard-links            preserve hard links

答案2

您所描述的实际上是三(3)个指向磁盘上数据的指针:

  • ABC
  • A

如果您mv A使用新的文件系统,它实际上会在新文件系统上创建数据的副本。

如果您进入新的文件系统,它会创建在新文件系统上mv B命名的数据的另一个副本。B但是,ABC 仍然保留在原始文件系统上。

如果您想在新文件系统上复制原始文件和链接,您应该做什么(将 source/ 和 new-file-system/ 替换为正确的路径):

  1. cp source/ABC new-file-system/ABC
  2. ln new-file-system/ABC A
  3. ln new-file-system/ABC B
  4. rm source/ABC source/A source/B

这将在新文件系统上复制/创建数据,在新文件系统上创建硬链接 A 和 B,然后删除旧数据和硬链接。

在完成命令之前,请务必仔细检查所有语法,以免丢失数据。

相关内容