Google cloud storage 在恢复时,gsutil似乎会重新上传文件

Google cloud storage 在恢复时,gsutil似乎会重新上传文件,google-cloud-storage,google-compute-engine,Google Cloud Storage,Google Compute Engine,我正试图将数据从一个总共有3000个文件(1TB)的磁盘上传到谷歌云存储。我正在使用gsutil cp-R。我的理解是,如果恢复/重新启动gsutil,它将使用校验和来确定文件何时已上载并跳过它 它似乎没有这样做:它似乎正在从顶部恢复上载,并重新替换所有文件。当我每隔十分钟运行连续的gsutil ls-Rl并将它们与diff进行比较时,我看到的似乎是大小相同但日期更改(更新)的相同文件。(即与重新上传的相同文件一致。) 例如: < 404104811 2014-04-08T14:13:

我正试图将数据从一个总共有3000个文件(1TB)的磁盘上传到谷歌云存储。我正在使用
gsutil cp-R
。我的理解是,如果恢复/重新启动
gsutil
,它将使用校验和来确定文件何时已上载并跳过它

它似乎没有这样做:它似乎正在从顶部恢复上载,并重新替换所有文件。当我每隔十分钟运行连续的
gsutil ls-Rl
并将它们与
diff
进行比较时,我看到的似乎是大小相同但日期更改(更新)的相同文件。(即与重新上传的相同文件一致。)

例如:

<  404104811  2014-04-08T14:13:44Z  gs://my-bucket/disk-top-directory/dir1/dir2/dir3/dir4/dir5/file-20.tsv.bz2
---
>  404104811  2014-04-08T14:43:48Z  gs://my-bucket/disk-top-directory/dir1/dir2/dir3/dir4/dir5/file-20.tsv.bz2
<404104811 2014-04-08T14:13:44Z gs://my bucket/disk top directory/dir1/dir2/dir3/dir4/dir5/file-20.tsv.bz2
---
>404104811 2014-04-08T14:43:48Z gs://my bucket/disk top directory/dir1/dir2/dir3/dir4/dir5/file-20.tsv.bz2
我用来读取磁盘和传输文件的机器运行的是Ubuntu 13.10。我使用Debian和Ubuntu的pip指令安装了gsutil

我是否误解了gsutil的可恢复转移应该如何工作?如果没有,是否有任何诊断和修复以获得正确的恢复行为?提前谢谢

您需要使用-n(无clobber)开关来防止重新上载目标上已经存在的对象

gsutil cp -Rn <disk-top-directory> <bucket>

此外,当传输超过2MB的文件时,gsutil自动使用可恢复传输模式。

如果您愿意使用(仍然是beta版)gsutil v4,则该版本的gsutil具有rsync命令。您可以通过运行以下命令来实现此目的:

gsutil更新gs://prerelease/gsutil_4.0beta2pre_减_m_sugg.tar.gz


在切换到这个主要的新版本之前,请务必阅读发行说明,尤其是在脚本中使用gsutil v3时。

谢谢!这解决了我的问题。这些文件的容量远远超过2MB,因此可能是可恢复传输模式与我想象的不一样,或者是出了问题,或者是我的gsutil版本与在线文档过时/同步(可能是因为我使用了pip)。很高兴有一个解决方案!
-n            No-clobber. When specified, existing files or objects at the
              destination will not be overwritten. Any items that are skipped
              by this option will be reported as being skipped. This option
              will perform an additional HEAD request to check if an item
              exists before attempting to upload the data. This will save
              retransmitting data, but the additional HTTP requests may make
              small object transfers slower and more expensive.