Google云存储:gsutil cp -n不会“跳过现有”或显示正在上传的文件

时间:2016-11-30 10:52:04

标签: google-cloud-storage cp gsutil

当恢复上传时(已经大约2GB,从40Gb上传了2,000个文件,7,000个文件)cp没有显示“跳过现有文件”的列表,因为它也使用了。 gsutil消息[xx/7.3k files][xx MiB/ 40GiB]也不会在停止时离开(ei:[2k/7.3k files][2GiB/ 40GiB]),但它从头开始:[00/7.3k files][00 MiB/ 40GiB]

我检查了https://console.cloud.google.com/storage/browser上传的内容:似乎没什么奇怪的,正在上传新文件,昨天发送的文件仍在那里。那么为什么gsutil没有说已经有2GiB和2k文件在线?

此外,cp命令不会像以前那样显示当前正在上传的文件。知道为什么吗? (虽然rsync确实如此)

这是我的cp命令gsutil -m cp -r -n "MyLocalFolder" gs://my_bucket/Backup 此外,我没有修改我的本地文件夹,也没有修改它包含的文件。

我遇到的另一个问题是-m rsync -r命令尝试上传现有文件而不是跳过它们。对于调试,我在cprsync命令之间切换了几次,rsync没有完全考虑cp命令已经上传的内容:它继续上传现有的文件。那么cprsync会有不同的校验和吗?如果不是,如何解释这种行为?

第二个问题的解决方案: 事实上我使用相同的目标为cp和rsync,但没有相同的方式构建: 如果cp命令为gsutil -m cp -r -n "MyLocalFolder" gs://my_bucket/Backup,则rsync命令为gsutil -m rsync -r "MyLocalFolder" gs://my_bucket/Backup/MyLocalFolder

1 个答案:

答案 0 :(得分:1)

gsutil cp -n仍需要发现本地文件夹中需要上传的文件(因为文件夹的内容可能已更改),所以如果重复命令并且有一些现有文件目标存储桶,它仍然需要枚举本地文件,即使它将跳过它们。这就是为什么它不会像[2k / 7.3k files] [2GiB / 40GiB]那样开始。

它仍应输出" Skipping existing item"但是对于已经存在的项目。

rsync使用与cp相同的校验和逻辑,所以我怀疑你没有将文件上传到完全相同的目的地。

gsutil版本4.21更改了cprsync命令以显示摘要信息,而不是每个文件的单独进度打印,这往往会向终端打印大量信息,特别是在使用-m标志时。