使用 xcopy 进行并行复制

Posted

技术标签:

【中文标题】使用 xcopy 进行并行复制【英文标题】:Parallel copy using xcopy 【发布时间】:2012-03-02 04:57:59 【问题描述】:

我需要将多个目录从一个位置复制到另一个位置。因此,将会有多个xcopy 语句,一个接一个。

每个文件夹中的文件数量巨大。有什么方法可以并行运行这些xcopy 语句吗?我能想到的一个选项是 - 在单独的批处理文件中调用每个 xcopy,并使用 @start 而不是 @call 调用这些批处理文件。

还有其他选择吗?

【问题讨论】:

【参考方案1】:

您可以直接启动 xcopy,例如 start xcopy [parameters]。这允许您并行运行许多 xcopy 实例。

顺便说一句:您尝试过 robocopy 吗?它包含在所有最近的 Windows 版本中,并提供比 xcopy 更多的选项(有时还提供性能)。

但通常并行复制多个目录比较慢(至少当您从一个驱动器复制到另一个驱动器时),因为它会强制源驱动器在并行复制作业之间寻找而不是顺序读取文件。

【讨论】:

我没有尝试过使用 Robocopy。它使用/MT[:number] 对吗?实际上,我需要在 Windows XP SP3 上执行此操作,因此需要明确获取 Robocopy。但是,我并没有完全理解它的/MT 用法。能详细点吗? robocopy 默认已经使用 8 个线程并行执行一些操作。这意味着您可以使用 robocopy 并行复制目录中的所有文件。例如,如果您指定了/MT:100,robocopy 最多可以并行复制 100 个文件。我不建议这样做 - 8 就足够了。因此,如果您确实选择了 robocopy 而不是 xcopy,请按顺序调用它。它将并行复制第一个目录,然后是第二个目录,依此类推。 可以确认西蒙的评论。我使用/MT:%NUMBER_OF_PROCESSORS%/MT:100 从庞大的远程目录中测量了ROBOCOPY 的构建输出,后者在四核i5-上的平均执行速度66% 6500。我希望我很久以前就知道这种级别的灵活性!

以上是关于使用 xcopy 进行并行复制的主要内容,如果未能解决你的问题,请参考以下文章

我们可以为单个数据库连接进行多个并行事务吗? [复制]

MySQL Replication之并行复制

为啥多处理不能并行工作? [复制]

MySQL 并行复制方案演进历史及原理分析

MySQL 并行复制方案演进历史及原理分析

mariadb 并行复制