我有几个盒子,里面装满了多年来从系统中取出的磁盘驱动器。我想将文件复制到新驱动器 - 特别是用户数据文件(例如来自“我的文档”或该驱动器上使用的 Windows 版本中的文件)。我还想删除这些驱动器上我不感兴趣的文件(如 Windows 系统目录),以便更好地跟踪我删除的内容做想要复制。我有一个 USB 3.0 小玩意,可以让我将驱动器热插拔到我的 Win7 系统上,但我一直遇到“导入”文件系统的安全权限问题。
我可以通过取得所有权来解决这些问题,并偶尔处理文件和目录上的 ACL,这些 ACL 甚至不允许所有者执行操作(令人惊讶的是,似乎总是有一些问题)。但这很快就会变成一件烦人的苦差事,而且通常取得大型目录树的所有权需要很长时间,而且几乎没有关于操作进展的反馈。
因此,我正在寻找建议或解决方案,以便我可以直接从这些驱动器复制我想要复制的文件,而无需处理 NTFS 权限。最好使用原生 Windows 工具或命令,但使用第三方软件的解决方案也可以(只要它不是太贵)。
答案1
你可以通过Linux 直播CD/DVD/USB,然后将文件复制到新驱动器。Linux 将忽略 NTFS 权限和安全性。启动一次,复制整个驱动器,移除 USB 驱动器并重做,直到复制完所有内容。您可以将它们复制到硬盘驱动器上的目录中,它们将继承该文件夹的权限,因此您将能够访问它们。
答案2
这robocopy
在这种情况下,命令似乎是理想的选择。它满足了您对 Windows 原生的偏好,并且默认只复制数据、其属性和时间戳,丢弃任何 NTFS ACL、所有者和审计信息,这意味着您不需要为其指定任何额外的复制标志。您还可以在发生中断时重新启动它。
以管理员身份打开 CMD 并输入以下命令:
robocopy <SOURCEPATH> <DESTINATIONPATH> /S /ZB /MT:64 /R:40 /W:30 /REG /ETA
开关故障
/S
复制所有包含文件的子文件夹,丢弃所有空的子文件夹。
/ZB
以可重启模式启动 Robocopy。可重启模式确保在命令中断(例如系统或网络故障)的情况下,您可以再次运行该命令以继续上次中断的位置。如果可重启模式的访问被拒绝,则以备份模式启动 Robocopy。
/MT:64
多线程复制,指定的线程越多,Robocopy 一次可以复制的文件就越多,从而提高性能。大多数运行 64 位 Windows 的现代计算机应该能够运行 64 个线程,但如果性能是一个问题,请降低线程数,或者如果您有一台非常强大的机器,请尝试最多 128 个线程。默认值为 8。
/R:40
将失败复制的重试次数设置为 40。此标志的默认值为 1,000,000,如果 Robocopy 无法复制特定文件,这将使其运行时间过长。如果您对此没有异议,并且绝对必须毫无差错地复制每个文件,则可以省略此开关,但如果不行,建议将其设置为更合理的数字。
W/:15
设置重试之间的等待时间(以秒为单位)。此选项很有用,因为 Robocopy 无法复制文件的原因通常是该文件被另一个进程锁定。重试之间的等待时间越长,使用该文件的进程最终释放该文件的可能性就越大,但同样,这也会增加 Robocopy 运行所需的总时间。此标志的默认值为 30 秒。
/REG
/R
将和开关的值记录/W
到注册表项中,这样您在将来擦除 Robocopy 时就无需将它们设置为相同的值。
ETA
监控 Robocopy 的进度。