复制到另一个 NTFS 磁盘并保留硬链接

复制到另一个 NTFS 磁盘并保留硬链接

我必须将目录结构从一个本地 NTFS 磁盘复制到另一个本地 NTFS 磁盘(Windows 7+)并保留该目录结构中存在的硬链接。

一个可接受的解决方案是在复制之前用(相对)符号链接替换硬链接,但我不确定这是否可行。

请注意,这些是硬链接,复制连接点和符号链接不会有问题,后者可以稍后复制和修复。我不打算克隆它,只是将目录结构(整个磁盘的一部分)复制到另一个非空磁盘。

这里有什么选项?

答案1

跨独立磁盘分区复制硬链接的工具

LN——命令行硬链接

示例命令: ln --copy x:\dir\dir2 y:\dir\newdir

在上面的例子中,x:\dir\dir2 下面的目录和文件被复制到 y:\dir\newdir,并且 x:\dir\dir2 内的所有硬链接/连接/符号链接都被复制/绑定到 y:\dir\newdir 下的新位置。


下载

在此处输入图片描述

基本说明

  • 从适用的 zip 文件以及vcredist(Visual C++ Redistributable)下载适合您的 CPU 架构的软件并安装它。
  • 然后只需将 zip 文件中提取文件和文件夹到某个新文件夹(例如C:\Temp)。
  • 在命令提示符下,更改为该 [目录] 文件夹(例如cd /d C:\Temp),然后按照上述步骤运行驱动器位置所需的命令示例命令显示。

笔记:运行ln --help显示帮助详细信息,但上述命令示例应该hard links按照文档进行复制。


潜在相关功能


其他说明

看起来,hard links它们的文件指针被锁定到同一个磁盘分区,不能跨多个分区使用。此外,hard links在 NTFS 上,分区是记录的一部分Master File Table(或至少是计数的属性),因此,如果您至少不在分区级别逐字节克隆,则将它们复制到具有自己的现有磁盘MFT可能会有问题。

答案2

命令行实用程序rsync将执行您所要求的程序。

假设您的旧数据在位置 A,而新数据在 B,请执行以下操作:

rsync -ahPruvz --hard-links A B

引用 rsync 手册:

这告诉 rsync 在源中寻找硬链接文件并将目标上的相应文件链接在一起。

如何获取rsync和使用它?Windows 有两种简单的替代方法:

第一种选择:使用cygwin。这是一个 Windows 软件。安装它,rsync在选择软件包的步骤中添加。其他一切都保留默认设置。安装后,使用它的 shell 输入命令。如果您愿意,可以使用完整路径,/usr/bin/rsync而不仅仅是rsync。如果您想访问 Windows 驱动器,请使用“/cygwin/drives”之类的路径,并始终尝试使用 TAB 自动完成。

第二种选择:如果是台式计算机,请使用实时 GNU/Linux 发行版。准备一个实时 USB 映像,从中启动,安装所需的磁盘并调用 rsync。如果实时映像没有rsync,请安装它。(apt-get install rsync在 Debian 及其衍生产品中。)如果您还没有 Linux 生态系统的经验,cygwin 可能会更容易。

答案3

尝试查看适用于 Windows 的 rsync。由于 rsync 有一个保留硬链接的选项(标志 -H、--hard-links),它应该可以完成这项工作(来源:https://download.samba.org/pub/rsync/rsync.html)。

您可以尝试研究类似 cwRsync 的东西:https://www.itefix.net/cwrsync#这个有GUI。

cwRsync 是 Rsync 的 Windows 版本,带有客户端 GUI。您可以使用 cwRsync 进行快速远程文件备份和同步。

答案4

如果要复制大量数据,可能需要使用快速复制。我尝试了两者lnrsync在尝试之前;ln工作了一段时间,但在消耗了 3 GB 的 RAM 并堵塞了单个 CPU 核心一小时后,就停止了任何有用的工作;rsync工作了,但速度非常慢。

请注意,使用 FastCopy 时,您需要打开该选项重现硬链接主要设置复制选项

相关内容