如何快速复制90万个文件?

如何快速复制90万个文件?

我需要将一些数据复制到 Windows 计算机,这些数据包括 900,000 个小文件,总计约 30 GB。但是,需要能够在一个半小时内完成复制和设置,而从 USB 硬盘复制可能需要 5 个小时以上,主要是因为文件数量太多。有没有更好/更快的方法来处理这个问题,比如进行某种块复制?谢谢

答案1

如果文件数量很多,最好创建 tar 存档,这样处理的文件就少了。如果您使用的是 USB 2.0 外部硬盘,则应考虑使用 USB 3.0、eSATA 或使用快速本地网络。

您的源操作系统是什么?如果您的两个操作系统都是 Linux,则可以通过 tar、gzip 和 ssh 将文件传输到目标计算机。您可以在 Windows 上安装 cygwin,以便在 Windows 上也能获得此类功能。

更新:
使用 Tar 和 SSH 提高 SCP 速度“帖子描述了通过 ssh 发送 tar 内容所需的命令。

答案2

如果硬盘可以从 USB 接口移除并连接到 SATA/ATA,我会将其安装在目标计算机上。正如其他人所说,您将获得更快的传输速度。对于复制,假设您使用的是 Windows,我会执行简单的 ROBOCOPY。它的速度几乎是您真正希望的一样快,尽管还有其他选择。

ROBOCOPY /E /B /MT 'source' 'destination'

我会尽量避免压缩所有这些文件,因为压缩和移动的时间很可能会超过简单移动文件的时间。

*为 robocopy 添加了 /MT 选项。当您处于多线程环境中时,它可以大大加快传输速度。

答案3

您可以尝试拍摄整个文件夹/驱动器的图像

在 Linux 系统上,您可以使用dd获取文件系统的原始副本并将其复制为单个大文件。

要将图像提取到 Windows,您可能需要安装 cygwin 或能够处理dd图像的程序。

答案4

rsync与选项一起使用z

-z,         --compress              compress file data during the transfer
            --compress-level=NUM    explicitly set compression level
            --skip-compress=LIST    skip compressing files with suffix in LIST

这将提高网络传输速度。因此,对于你的情况来说,这很可能没什么用。

读了更多内容后,我意识到,在将数据从一个本地硬盘复制到另一个本地硬盘时,我们不应该使用“-z”标志,这会增加开销。感谢@FakeName 的评论。

相关内容