我正在尝试将我的 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