GCP SDK gsutil rsynch不返回进度
Posted
技术标签:
【中文标题】GCP SDK gsutil rsynch不返回进度【英文标题】:GCP SDK gsutil rsynch not returning progress 【发布时间】:2018-11-17 20:17:13 【问题描述】:当我从 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 似乎关闭得很好。
这是一个错误吗?还是我错过了什么?
【问题讨论】:
【参考方案1】:我建议您更新到latest gsutil release。 我在我的机器和Cloud Shell 上进行了测试,两者都使用 rsync 版本 4.31,它们显示命令的进度,列出正在复制的文件。
我在不同的环境中重现了该脚本,并观察到该脚本仅在 Windows 机器上完成 rsync 后会跳过命令。我在 Google Cloud SDK Shell 和 Cygwin for Windows 上进行了测试。
但是,在 Linux 机器和 Cloud Shell 上,相同的脚本按预期工作,并在 rsync 完成后执行后续命令。
此行为取决于各个 shell 的实现。您需要捕捉意外行为并以所需的方式处理情况,因为解决方案因环境而异。
【讨论】:
更新有帮助,当批处理文件运行时,我现在可以在控制台上看到一些 StdOut。我仍然遇到 rsynch 完成时批处理文件被中止的问题。 请贴出错误的日志输出,以便我检查。 日志?我应该发布控制台 StdOut 吗? 我认为我的问题是从 gsutil 中不正常地退出 rsynch。请尝试 OP 中的简单批处理文件。它会暂停吗? 我在批处理文件中复制了 gsutil 命令的简单脚本。正如您所提到的,命令窗口在执行第一个 gsutil 命令行后关闭,忽略下一个 gsutil 命令行和暂停。所以我可以确认我们观察到了相同的行为。我将检查 gsutil.cmd 文件以收集有关此行为的更多信息。我们可能还需要让 Google Cloud Storage 团队参与进来。以上是关于GCP SDK gsutil rsynch不返回进度的主要内容,如果未能解决你的问题,请参考以下文章