我想在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文件?
答案 0 :(得分:1)
在两个存储桶之间设置同步过程时,第一次迭代将是最慢的,因为它需要将源存储桶中的所有数据复制到dest-bucket。对于跨提供程序同步,每个对象需要两个单独的连接 - 一个用于将数据从源提取到主机,另一个用于将其从主机传送到目标(gsutil是指以此作为“菊花链”模式)。
对于存储桶之间的初始同步(以及可能的后续同步),最好使用GCS's transfer service,这允许GCS代表您复制对象。这比使用一台运行gsutil的机器完成所有工作要快得多。
对于警告,如果您没有安装crcmod C扩展,则会在命令执行开始时打印一般警告,无论目标位置是什么。