将数十万个 Mac 文件复制到 NAS

将数十万个 Mac 文件复制到 NAS

我正在尝试将我的 Aperture 库传输到 NAS。它包含几十万个文件(相当小)。

当 OS X 完成大文件的复制后,复制操作的预计时间将从 2 小时增加到 4-5 天(并且还在增加)。

我知道一个解决方案可能是将它们打包成 tar 并复制 tarball,但问题是我想要复制的库大约有 80GB 而我的 Mac 上只剩下 10GB。

有什么想法可以在这种条件下如何复制它们吗?

答案1

问题可能在于您正在处理许多小文件,而大多数复制工具对每个文件都有开销。可以将文件打包,将数据传送到目的地,然后在另一端解压存档,而无需在系统上的任何地方实际创建 tarball。

tar cf - "~/Pictures/Aperture Library" | (cd "/Volumes/NAS/" && tar xf -)

这样做的缺点是您将不会拥有任何类型的进度计,但它应该比更传统的副本快得多。

答案2

您可以使用rsync命令行工具可以对文件进行单向同步。rsync如果您没有耐心,此工作方式可以轻松中断该过程 — 您可以稍后轻松恢复。只有仍需传输的文件才会被复制。

你需要打开终端应用程序,然后rsync像这样调用:

rsync -avh --progress "~/Pictures/Aperture Library" "/Volumes/NAS/"

这里,第一个路径指向你的库,默认情况下应该在图片。如果您不确定,您可以将库拖放到终端命令行,它会自动为您填充路径。NAS 的路径也是如此。

-a选项启用存档模式,该模式设置一些默认值,包括递归复制。-v将使命令更加详细。-h打开人类可读的文件大小。

Rsync 会显示进度表。如果要取消该过程,请按CtrlC。您可以再次调用该命令以继续rsync

答案3

如果外部设备支持完整的 ssh shell,您可以执行以下操作:

tar cf - /your/dir|ssh -C 'tar xf - -C /directory/where/you/unpack'

由于文件过多,不建议对 tar 使用 -c 选项。打印会导致速度下降。ssh 需要使用标志 -C 以便通过网络进行动态压缩。小块数据会导致小数据加密/解密,这会提高速度。但如果速度仍然太慢,您可以将加密芯片从 3des 更改为 twofish,或者如果可能的话更改为 1des。最后一种不安全但速度最快。

否则您可以使用 rsync,但 rsync 应该安装在外部设备上。请参阅 man。rsync 可以通过 rsync 服务器或 ssh 传输数据。

答案4

尝试 MHISoft fastcopy opensource。它以递归方式复制文件和目录。 https://github.com/mhisoft/fastcopy/releases

相关内容