当恢复上传时(已经大约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
命令尝试上传现有文件而不是跳过它们。对于调试,我在cp
和rsync
命令之间切换了几次,rsync
没有完全考虑cp
命令已经上传的内容:它继续上传现有的文件。那么cp
和rsync
会有不同的校验和吗?如果不是,如何解释这种行为?
第二个问题的解决方案:
事实上我使用相同的目标为cp和rsync,但没有相同的方式构建:
如果cp命令为gsutil -m cp -r -n "MyLocalFolder" gs://my_bucket/Backup
,则rsync命令为gsutil -m rsync -r "MyLocalFolder" gs://my_bucket/Backup/MyLocalFolder
答案 0 :(得分:1)
gsutil cp -n
仍需要发现本地文件夹中需要上传的文件(因为文件夹的内容可能已更改),所以如果重复命令并且有一些现有文件目标存储桶,它仍然需要枚举本地文件,即使它将跳过它们。这就是为什么它不会像[2k / 7.3k files] [2GiB / 40GiB]
那样开始。
它仍应输出" Skipping existing item
"但是对于已经存在的项目。
rsync
使用与cp相同的校验和逻辑,所以我怀疑你没有将文件上传到完全相同的目的地。
gsutil
版本4.21更改了cp
和rsync
命令以显示摘要信息,而不是每个文件的单独进度打印,这往往会向终端打印大量信息,特别是在使用-m
标志时。