在Windows系统中最快的文件移动方式

30

我想把约800GB的数据从一个NTFS存储设备移动到另一个FAT32设备(都是外置硬盘)上,使用的系统为Windows。

最佳方法是什么?

  1. 只需使用剪切-粘贴吗?
  2. 使用命令提示符?(move
  3. 编写批处理文件,按给定时间间隔复制小块数据?
  4. 使用一些特定的应用程序来完成任务吗?
  5. 或者有更好的想法...?

什么是最安全、高效和快速的方法来完成这个耗时的过程?


确保NTFS驱动器上的所有文件都适用于FAT32,即没有超过2G的文件。我几周前用robocopy做了同样的事情。 - Darryl Braaten
1
我即将在Windows 10上将1.5TB的数据从Backblaze备份驱动器移动到我的新替换7200rpm驱动器,惊讶的是自2008年以来没有更多人提出这个问题(或提供新答案)。希望Robocopy(目前的主要答案)仍然是最好的选择,因为那可能是我要尝试的。 - Ryan
1
这是在谷歌上“windows cmd 最快的移动文件方式”的热门搜索结果,所以我想添加一个技巧:有时移动文件位置比将文件移动到另一个位置要快。也就是说,如果我要把 500k 个文件移到另一个文件夹,剩下 20k 个文件不需要移动,那么先将这 20k 个文件移动到临时位置,然后重命名/移动 500k 文件的父文件夹,最后将这 20k 个文件的父文件夹改名为原来的名字,会更快一些。 - Nathan Goings
10个回答

39

Robocopy

您可以重新启动该命令并恢复操作。我经常在网络上使用它。它也适用于大文件。


2
Robocopy还包括一个命令行开关,可以在数据包之间延迟,使其与其他流量良好共存。我的经验是,使用Robocopy后,吞吐量大约是Windows XP资源管理器的2倍。 - Bevan
1
太完美了,正是我所需要的!我目前正在使用Robocopy来复制数据。谢谢大家的建议。 - Andreas Grech
1
/mt选项使其成为具有8个线程的多线程复制 - 我听说这个选项已经添加到Windows Server 2008 R2及更高版本提供的robocopy中 - 由于我没有它,我尝试一次复制4个目录,发出4个robocopy命令。 - hello_earth
1
这里也推荐使用Robocopy(附有技巧):http://superuser.com/a/364995/74576 - Ryan
OP提到的是移动而不是复制文件。文档指出/mov选项在复制后会"从源文件中删除它们"。 - undefined

6

如果可能的话,我会物理移动硬盘。


关闭存储设备,拔掉电缆,取出硬盘,将硬盘插入新的存储设备中,连接电缆,重新开启... - D'Arcy Rittich
4
不要将驱动器放入RAID子系统中,因为一旦放入,它们通常会立即初始化(擦除)磁盘。问我怎么知道的。 - dethSwatch

4

2

如果您需要在网络上移动文件,建议使用服务器之间的FTP传输。使用Windows文件系统会因为通信协议而变得缓慢。


2
你需要先将它压缩成zip格式。FTP在处理数千个文件时速度较慢。 - Chloe

2

2

尝试使用WinRar或压缩工具。相较于许多小文件,大的“文件”可以更快地移动。 大多数压缩工具允许将存档(zip)文件分成多个存档。

打开压缩功能时,甚至可以减小大小。


1

如上所述,其中最快的复制文件的方式之一是使用robocopy。 它非常灵活和强大。如果从您的dos提示符直接运行该命令不起作用,请尝试使用powershell选项,如下面的示例。

在使用"robocopy /?"命令之前必须检查此命令的文档。

powershell "robocopy  'Source' 'destination' /E /R:3 /W:10 /FP /MT:25 /V" 

/E - Copy subdirectory including empty ones.
/R - Retry 3 times if failed.
/W - wait for 10 seconds between retries.
/FP - include full path name in output.
/MT - Multi thread.
/V - verbose output.

你好,来自2022年的问候。这些标志仍然有效。谢谢! - Michael James

1
我使用了Teracopy将50多GB的数据复制到了一个128GB的闪存驱动器。
花费了近48小时...由于停电,不得不重复一遍。必须重新格式化并重新开始...这不是我最喜欢做的事情...

看起来速度异常缓慢,仅有290kb/sec...现在你可以获得USB3 128Gb闪存驱动器,它们几乎可以做到9Mb/sec的随机4k写入,并且峰值写入速度接近250Mb/sec。 - localhost

1

1

我想评论@hello_earth于2015年10月13日11:24关于多线程的评论,但我在Stackoverflow上没有足够的声望(到目前为止,我主要在Superuser上发布):
从1个存储设备复制文件到另一个存储设备时,多线程通常高效,因为顺序读取可以达到最快吞吐量,使用多个线程会使硬盘像疯了一样发出嘎嘎声来同时读取或写入几个文件,而且由于硬盘一次只能访问一个文件,它必须从一个文件中读取或写入一个块,然后移动到位于不同区域的另一个文件的块,这会大大减慢进程(我不知道SSD在这种情况下会表现如何)。这既低效又有潜在危害:当磁头反复移动穿过盘片以短时间内到达几个区域时,机械应力显著增加,而不是停留在同一位置解析大的连续文件。

我在使用md5deep批量检查一个非常大的视频文件夹的MD5校验和时发现了这个问题:默认情况下,分析是多线程的,因此在i7 6700K CPU上有8个线程,但速度极慢。然后我添加了-j1选项,表示1个线程,速度显著提高,因为现在文件是按顺序读取的。
另一个考虑因素是,如果文件未被分段,并且位于硬盘驱动器的开头,即盘片的最外部,线性速度最大(对于固态驱动器或其他基于闪存的设备来说,这方面无关紧要),传输速度将显着提高,而且还会略微提高。
此外,原帖作者想要“最安全、高效和快速地完成这个耗时的过程”-我认为必须选择一个妥协,偏向于速度/效率或安全:如果你想要安全,你必须检查每个文件是否完美复制(通过检查MD5校验和或使用类似WinMerge的工具);如果你不这样做,你永远无法100%确定在过程中是否有一些SNAFUs(硬件或软件问题);如果你这样做,你需要花费两倍的时间来完成任务。
例如:我依赖一个叫做SynchronizeIt!的小工具来进行文件复制,因为它与大多数类似工具相比有一个巨大的优势,可以保留所有时间戳(包括目录时间戳,就像Robocopy使用/DCOPY:T开关一样),并且它有一个简化的界面,只有我需要的选项。但是我发现在复制后总是有一些文件损坏了,恰好剩下25000个字节(例如,复制1GB的视频后,有25000个好的字节和1GB的00s,复制过程异常快,仅需一瞬间,这引起了我的怀疑)。我第一次向作者报告了这个问题是在2010年,但他将其归咎于硬件故障,并没有认真考虑过。我仍然使用SI,但每次复制后都会仔细检查文件(使用WinMerge或Total Commander);当文件损坏时,我改用Robocopy(使用SynchronizeIt损坏的文件,当它们被Robocopy复制后,再次使用SynchronizeIt复制,则被完美地复制,因此在NTFS分区上记录的某些内容使该软件混淆了,而Robocopy则以某种方式解决了这个问题)。然后在2015年,我再次报告了这个问题,发现更多有关哪些文件被损坏的模式:它们都是用特定的下载管理器下载的。那次作者进行了一些挖掘,并找到了解释:原来他的工具在复制带有鲜为人知的“稀疏”属性的文件时有问题,而某些下载管理器在下载多个块的文件时设置了这个属性以节省空间。他向我提供了一个更新后可以正确复制稀疏文件的版本,但没有在他的网站上发布(目前可用的版本是2009年的3.5版,我现在使用的版本是2015年10月的3.6 beta版),因此,如果您想尝试这个优秀的软件,请注意这个错误,并在从源中删除它们之前使用不同的工具彻底验证每个复制的文件是否与源文件相同。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接