将数百万张图像从 Macos 移动/复制到外部驱动器到 ubuntu 服务器

将数百万张图像从 Macos 移动/复制到外部驱动器到 ubuntu 服务器

我为一个机器学习项目创建了包含数百万张图像(到目前为止超过 15M)的数据集,占用了超过 500GB 的存储空间。我在 Macbook Pro 上创建了它们,但希望以某种方式将它们转移到我们的 DGX1(GPU 集群)中。我认为复制到快速外部 SSD(raid0 中的 2x nvme)然后将该驱动器直接插入本地终端并将其复制到网络暂存盘会更快。我不再那么确定了,因为我已经 cp-ing 到外部驱动器超过 24 小时了。

我一开始尝试使用 finder gui 进行复制(坏主意!)。对于较小的数据集(2M 图像),我使用 7zip 创建一些档案。我现在使用 MacOS 中的终端通过 cp 复制文件。

我试过cp /path/to/dataset /path/to/external-ssd

Finder 绝对不是最好的方法,因为它在“准备”复制阶段需要很长时间。

使用 7zip 归档数据集提高了“文件”传输速度,但提取文件需要 4 天(!),而数据集的时间要小一个数量级。

使用命令行 cp,启动速度很快,但速度似乎变慢了。活动监视器显示磁盘上有 6-8k IO。也许。 iostat 报告的速度在 14-16 MB/s 之间,至少在随机抽查期间是这样。已经24小时了,事情还没有完成一半。

有一个更好的方法吗?

对于我的目的,我不清楚 rsync 是否比 cp 更好: 如何将文件从远程服务器复制到本地计算机?

答案1

  1. 就文件传输速度而言,存档数据是一个不错的选择。但是,如果这些图像大部分是 JPEG,则数据已经被压缩,您最终会浪费 CPU 时间来压缩数据,以最终使文件大小增加 1% 或 2%。这就是为什么你可以尝试一下,tar因为它只将文件打包在一起而不尝试压缩它们(除非你要求它;-)

  2. 如果您的网络设置允许,另一个值得尝试的技巧是在您的笔记本电脑上启动 Web 服务器,然后从目标主机下载它们。这将“从笔记本电脑复制到外部媒体”+“从外部媒体复制到目的地”的过程简化为单步过程。我已经练习过很多次(在 Linux 机器之间)并且效果很好。

这个很详细这里。主要步骤是:

在发送方:

  1. cd 到包含要共享的文件的目录
  2. 使用 Python 启动 Web 服务器:
    • 使用 Python 2: python -m SimpleHTTPServer 端口
    • 使用Python 3:python -m http.server 端口

在接收方,文件将位于http://发件人IP:端口。您可以轻松检索文件wget -c http://senderIp:port/yourArchiveName

相关内容