有没有比Windows默认文件复制更好的替代方案?

38

我需要在电脑上复制数百GB的随机文件,但对Windows内置的文件复制功能非常谨慎。

我不想让它陷入“你确定吗?”、“你真的确定吗?”、“甚至是zip文件?”、“连只读文件也是?”这样的循环中,一旦我离开就停止了。

我不希望它工作几个小时然后意外停止:“有人曾经打开过这个文件,所以我不会复制它!”然后取消整个复制或只是退出而没有指示已完成的工作和剩余工作。

您有使用哪些文件管理程序的经验? 您推荐哪一个?

这个问题与我的另一个问题相关:我如何在较新的SATA电脑上使用旧的PATA硬盘驱动器?


5
这个问题与主题极不相关,但要意识到它是 StackOverflow 上最早的问题之一,可能是在 SuperUser 存在之前提出的,当时被认为是相关的。它应该用历史标签进行保护,并保持原样。 - Mark Ransom
22个回答

57

使用 Robocopy(强大的文件复制)

注意:

在 Windows Vista 和 Server 2008 中,当您输入:

xcopy /?

你获得:

注意:Xcopy现已过时,请使用Robocopy。

所以开始习惯使用robocopy吧 :)


1
我对XCOPY的主要抱怨是,即使目标文件已经存在且具有相同的文件大小和修改日期,它仍会重新复制文件。 - Gordon Bell
2
在Windows 7上没有弃用警告,但在Windows 2008上存在。 - Chris Weber
1
@Chris Weber:是的,我也注意到了,我真的很想知道背后的故事。 - huseyint
我刚在 Windows 8 上尝试了 xcopy /s,但没有收到类似的提示。 - phuclv

20

怎么看待老旧的命令行Xcopy?S:表示源文件夹,T:表示目标文件夹:

xcopy /K /R /E /I /S /C /H /G /X /Y s:\*.* t:\

/K 复制属性。普通的Xcopy会重置只读属性。 /R 覆盖只读文件。 /E 复制目录和子目录,包括空目录。 /I 如果目标不存在且复制多个文件,则假定目标必须是目录。 /S 复制目录和子目录,但不包括空目录。 /C 即使出现错误也继续复制。 /H 复制隐藏和系统文件。 /Y 禁止提示确认是否要覆盖现有目标文件。 /G 允许将加密文件复制到不支持加密的目标位置。 /X 复制文件审核设置(意味着/O)。
(编辑:添加了自几年前以来新增的/G和/X)

这比常规的Windows复制要好得多。有一次我们不得不将一个文档服务器从一个分区复制到另一个分区。我想我们首先尝试了Windows复制(说需要20多个小时)。当我们尝试使用X-copy时,只花了不到10个小时(并保持了Windows权限完好无损)。 - Miles
2
xcopy在复制单个文件的路径超过256个字符时存在严重的错误。xcopy将以“内存不足”错误中止整个操作->不要使用xcopy! 作为替代方案,这将几乎完成xcopy的所有工作而没有错误:robocopy c:\ srcdir d:\ dstdir / XJ / SL / B / E / S / R:1 / W:1 / NFL / NS / NC / MT> mylog.txt 2>&1 - Oliver Zendel

15

2
Teracopy无法处理外部驱动器电缆断开然后重新连接的情况。即使驱动器字母相同,它也会永久卡在“设备未就绪”上。这就是我来到这里要解决的问题,因为我有50个带松动连接器的驱动器。 :( - Christian Shay

12

我肯定会优先选择:

1) Teracopy - 基于GUI的,替代默认的Windows复制/移动界面,并添加到上下文菜单中。基本版本免费(我猜是用于家庭使用)。

2) Robocopy - 基于CLI的,用于脚本编写。这是来自微软的免费工具,包含在Vista / Windows 2008中。MS Technet也有一个GUI用于robocopy - 用于创建语句,您可以稍后将其嵌入到脚本或命令提示符中。

附注:我知道这些已经在这里建议过了,如果可以的话,我会为它们投票。


7

你真的需要使用文件同步工具,比如SyncBackSEMS SyncToy或者甚至是WinMerge都可以解决问题。 我更喜欢SyncBack,因为它允许你为几乎每种可能的情况和冲突设置非常明确的规则,至少比其他两个更好。 使用这些工具之一,你就不必一直点击所有的弹出窗口,而且你可以毫无疑问地验证目标和源完全相同。


3
@hyperslug我也输入了那个网址,发现了这个:)我好羡慕。 - user142019
那几乎和用户名为“undefined”的酷哥一样酷。 - tim

6
你可以尝试使用SuperCopier,它可以替代Windows标准复制机制并在加载时启用。
它可以在末尾重试失败的文件,恢复被取消的复制(即使是Windows取消的复制),接受“全部”作为每个答案。你甚至可以在出现烦人的问题(文件已存在,复制文件错误)之前回答它们。

4
大力推荐robocopy。我用它来做你提到的那种事情。
例如,我目前正在我的服务器上运行5个robocopy会话,其中我正在在3个远程服务器之间复制约60GB的文件,我通过CheckPoint VPN连接到其中两个,另一个是通过JungleDisk映射的Amazon S3空间。
我正在与全国另一端的同事合作。他今晚稍后将登录到相同的服务器并运行类似的robocopy批处理文件以下载我当前正在上传的所有更改。
“杀手级应用程序”功能是,robocopy将保留文件日期/时间戳,并且默认情况下仅复制不同的文件。因此,您可以将其指向一个巨大的目录树,只有更改的文件才会被复制。
以下是做这种事情的一些有用提示...
/MIR 镜像一个目录树,因此将删除并添加
/R:10 告诉robocopy在放弃之前尝试10次复制文件。默认值为1,000,000次
/LOG+somefilename.log 将屏幕输出附加到somefilename.log,如果需要,将创建它。
/XD dir1 dir2 将忽略复制中名为dir1或dir2的任何目录。可以使用通配符。
/FFT 将使用FAT时间戳,其精度低于NTFS(在时间戳中使用2秒的粒度)。我在Linux文件系统和NTFS之间复制时也发现这个很有用。
我通常会使用类似的东西
robocopy d:\workdir y:\workdir /TEE /LOG+:d:\update.log /MIR /R:5

这将使用(/MIR)命令将d:\workdir与y:\workdir进行镜像同步,将操作记录追加到d:\update.log文件中(/LOG+d:\update.log),并同时输出到控制台和日志文件(/TEE),在移动到下一个文件之前尝试每个文件5次。

它还支持UNC路径。

如果您有大量需要在多台计算机之间进行同步的文件,则robocopy是您的好帮手。


3
除了已经提到的XCOPY、RoboCopy和TeraCopy之外,您还可以尝试使用Total Commander。它也是一个很好的备份工具。

3

看起来您需要的是备份工具。

我一直使用SyncBack(有一个版本是免费的)。您也可以尝试MS SyncToy,它试图使移动、复制、同步等变得容易。

如果您确实只是在随机时间复制随机文件,那么您可以尝试Total Copy,它的额外好处是在网络上工作良好(暂停、恢复等)。


3
使用 Robocopy,它可以在“可重启模式”下复制文件,并且应该尊重文件属性。它随附于Vista和Server 2008,并且您可以为旧操作系统下载它。此外,您可以将其设置为在复制失败时重试,以获取正在被另一个进程暂时使用的文件。

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