谷歌云存储:gsutil cp -n 不会“跳过现有”或显示正在上传的文件
Posted
技术标签:
【中文标题】谷歌云存储:gsutil cp -n 不会“跳过现有”或显示正在上传的文件【英文标题】:Google cloud storage: gsutil cp -n doesn't "skip existing" or display files being uploaded 【发布时间】:2017-04-14 15:54:12 【问题描述】:恢复上传时(已经上传了大约 2GB,从 40Gb、7,000 个文件中上传了 2,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
【问题讨论】:
我发布了一个答案,但是如果您发现某些您认为是错误的东西,您能否创建一个简单的文件夹和一组命令来重现它并将邮件发送到 gs-team@google.com?谢谢。 【参考方案1】:gsutil cp -n
仍然需要发现本地文件夹中的哪些文件需要上传(因为文件夹的内容可能已更改),因此如果您重复该命令并且目标存储桶中有一些现有文件,它仍然即使要跳过它们,也需要枚举本地文件。这就是为什么它不会从 [2k / 7.3k files] [2GiB / 40GiB]
之类的东西开始。
但它仍应为已存在的项目输出“Skipping existing item
”。
rsync
使用与 cp 相同的校验和逻辑,所以我怀疑您没有将文件上传到完全相同的目的地。
gsutil
4.21 版更改了cp
和rsync
命令以显示摘要信息而不是每个文件的单独进度打印,这往往会向终端打印大量信息,特别是当@987654328使用了@标志。
【讨论】:
是的,它没有启动是合乎逻辑的,就在我启动它时,[2k / 7.3k files] [2GiB / 40GiB]
但据我了解,它应该在一段时间后(枚举本地和远程文件的时间) 显示[2k / 7.3k files] [2GiB / 40GiB]
。我最多不明白,几分钟后我得到:[0k / 7.3k files] [100MB / 40GiB]
(可能是我停止 gsutil 时正在上传的文件)。
同样对于 rsync,我正在上传到同一个位置(我使用相同的命令,我只是将 -m cp -r -n
替换为 -m rsync -r
,因此本地和远程位置保持不变)。如果我理解正确,gsutil 4.21 用于 cp 和 rsync 的正常行为将显示(在我的情况下)2000 行跳过项目,然后只显示定期更新的这一行(ei,[2k / 7.3k files] [2GiB / 40GiB]
,然后是3k / 7.3k files] [2.1GiB / 40GiB]
...)。对吗?
这有点正确,它会在枚举项目时跳过它们,所以你最终会得到 2000 条跳过的行。我认为如果您需要更多调试细节,我们应该使用可重现的示例。以上是关于谷歌云存储:gsutil cp -n 不会“跳过现有”或显示正在上传的文件的主要内容,如果未能解决你的问题,请参考以下文章
gsutil cp 命令错误,CommandException:没有匹配的 URL:
从谷歌云存储到 s3 的 gsutil rsync 挂在大文件上
通过 gsutils 和谷歌云存储下载谷歌播放控制台统计信息