加速s3和gs之间的gsutil rsync

时间:2017-11-16 20:09:56

标签: gsutil

我想在s3和gs之间rsync一个包含100M文件的存储桶。我有一个c3.8xlarge实例并快速运行:

$ time gsutil -m rsync -r -n s3://s3-bucket/ gs://gs-bucket/
Building synchronization state...
At source listing 10000...
^C

real    4m11.946s
user    0m0.560s
sys     0m0.268s

10k文件大约需要4分钟。按照这个速度,计算同步状态需要27天。我能做些什么来加快这个速度?

我还注意到[并修复]以下警告:    警告:gsutil rsync在修改时间不使用时使用哈希    可在    源和目的地。你的crcmod安装没有使用    模块的C扩展,因此校验和运行速度非常慢。如果这是你的    自更新gsutil以来的第一个rsync,这个rsync可能需要更长的时间    通常。有关安装扩展程序的帮助,请参阅" gsutil help crcmod"。

是否计算了文件哈希值,或者我只是在等待列出100M文件?

1 个答案:

答案 0 :(得分:1)

在两个存储桶之间设置同步过程时,第一次迭代将是最慢的,因为它需要将源存储桶中的所有数据复制到dest-bucket。对于跨提供程序同步,每个对象需要两个单独的连接 - 一个用于将数据从源提取到主机,另一个用于将其从主机传送到目标(gsutil是指以此作为“菊花链”模式)。

对于存储桶之间的初始同步(以及可能的后续同步),最好使用GCS's transfer service,这允许GCS代表您复制对象。这比使用一台运行gsutil的机器完成所有工作要快得多。

对于警告,如果您没有安装crcmod C扩展,则会在命令执行开始时打印一般警告,无论目标位置是什么。