首页 > 解决方案 > GCP SDK gsutil rsynch不返回进度

问题描述

当我gsutil rsynch从 GCP Console 或 .bat 文件运行时,不会显示完整的进度数据(我很确定以前它是这样的。)我在 403.0.0 版

这是命令:

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

>

如果我运行相同的命令,然后pause在 .bat 文件中运行 a,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 似乎关闭得很好。

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

标签: windowsvb.netgoogle-cloud-storagegsutilgoogle-cloud-sdk

解决方案


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

我在不同的环境中重现了该脚本,并观察到该脚本仅在 Windows 机器上完成 rsync 后才跳过命令。我在 Google Cloud SDK Shell 和 Cygwin for Windows 上进行了测试。

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

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


推荐阅读