复制包含许多文件的大型远程文件夹的最佳策略,比简单的暴力 scp 更快

复制包含许多文件的大型远程文件夹的最佳策略,比简单的暴力 scp 更快

我刚刚用基本 scp 从 Google Cloud 复制了一个大文件夹(80Gb 小图片数据集),用时 15 小时,使用 scp(Google Cloud scp,但它使用 scp),这需要很长时间。

我正在寻找处理这种情况的最佳方法。我读到 rsync 可能会更快,但我不确定当您的计算机上没有文件夹的一部分时它是否会改变某些东西。

我也读过更改密码选项可以提高速度但这是值得商榷的。

我还认为,发送一个大文件可能比发送很多小文件更快。因此,发送存档会更快。存档也是压缩的,因此发送起来更轻便、更快,但解压也需要很长时间。压缩只是一次性问题,所以我不考虑它。

那么复制大型远程文件夹的最佳策略是什么?

谢谢。

编辑:回复评论,不需要加密,我的网络连接是光纤,我不知道具体的速度,但速度很快。

该文件夹主要包含 pdf(~500kb)和 png(一个 1.5kb,另一个 ~100kb)中的三组图片,它还包含一些我不一定需要的 tensorflow 模型和预测,但这不是主要部分,我将来会将其与图片分开。这是一个离开的人的工作,我刚刚把它拿回来。我也暂时在公司,我会整理这个以方便下一个人的工作。

答案1

Sftp 和 scp 的速度受限,部分原因是加密。如果这不是很必要,您可以设置一个 ftp 服务器。

但是您正在使用 Google 云,所以我认为您想使用该gsutil cp命令。

您可以找到更多信息这里

基本上,它的工作原理是将云端可访问的所有内容分配为一个 URL,就像它是本地的一样。假设您有一个名为的存储桶example,您可以使用以下命令将其复制到名为的本地文件夹中target_folder

gsutil cp - r gs://example target_folder

如果您有多个较小的文件需要并行上传,您可以在 gsutil 后添加 -m!

如果这是您第一次使用 gcloud 命令,请首先运行:gcloud init以便获得授权并选择存储桶所在的正确项目。

答案2

使用 RSYNC。当您复制许多小文件时,rsync 将仅复制已更改的文件,从而节省大量时间。Rsync 在确定如何检测/处理已更改和已删除的文件方面具有很大的灵活性。(启用压缩也很简单,但由于源文档看起来相当压缩,因此好处有限)。

答案3

在我看来,最好的策略是打包(不进行任何压缩,只是存储 - 解压会很快)通过例如 rar(添加-rr以添加恢复部分) - 成 4GB 大的文件。

接下来您可能想要启动多次转接,如果您的线路足够快,则可以大大加快速度。

最后要考虑的是,如果不需要加密,就删除它。使用简单的ftp

相关内容