GCP SDK gsutil rsynch 未返回进度

GCP SDK gsutil rsynch not returning progress

当我从 GCP 控制台或 .bat 文件 运行 gsutil rsynch 时,不显示完整的进度数据(以前我很确定。)我在第 403.0.0 节

命令如下:

>gsutil rsync -r -n \xxxx\WEBSITE\xxx\pages gs://xxx/pages
 Building synchronization state...
 Starting synchronization...

>

如果我 运行 相同的命令,后跟 .bat 文件中的 pause,则不会命中 pause - 批处理文件终止。 glist(也许其他)确实将它们的数据输出到控制台并继续执行批处理命令的平衡。

c:
cd "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin\"
gsutil rsync -r -d \xxx\pages gs://xxx/pages 
pause <<<<< never get here

如果我使用 .Net Process,我可以捕获包含进度数据的标准输出。但是,在 rsynch 完成后,StdOut 似乎会很好地关闭。

这是一个错误吗?还是我遗漏了什么?

我建议您更新到 latest gsutil release。 我在我的机器和 Cloud Shell 上进行了测试,两者都使用 rsync 版本 4.31,它们显示命令的进度,列出正在复制的文件。

我在不同的环境中重现了脚本,发现脚本仅在 Windows 机器上完成 rsync 后才会跳过命令。我在 Google Cloud SDK Shell 上测试过,也在 Cygwin 上测试过 Windows.

但是,在 Linux 机器和云 Shell 上,相同的脚本按预期工作,并在 rsync 完成后执行后续命令。

此行为取决于各个 shell 的实现。您需要捕捉意外行为并以所需的方式处理这种情况,因为解决方案因环境而异。