gsutil 上的 ResumableUploadAbortException

ResumableUploadAbortException on gsutil

我在使用 gsutil

时一直看到以下错误
ResumableUploadAbortException: Upload complete with 6275 additional bytes left in stream

命令很简单,类似

gsutil cp -r <source_path> gs://<target-bucket>/<target_path>

里面有大约 80 个文件 <source_path><source_path> 中也有嵌套文件夹。将 gsutil cp 更改为 gsutil -m cp 没有任何区别。当我 运行 它与许多其他代码一起在 python 脚本中时,这个错误是可重现的。但是,当我运行单独在bash中执行命令时,似乎没有任何问题。所以我想知道 ResumableUploadAbortException 可能是什么原因?

带有 gsutil -D -m cp

的调试输出尾部
total_bytes_transferred: 794750002
Total bytes copied=794750002, total elapsed time=7.932 secs (95.55 MiBps)
DEBUG: Exception stack trace:
    Traceback (most recent call last):
      File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/__main__.py", line 565, in _RunNamedCommandAndHandleExceptions
        parallel_operations, perf_trace_token=perf_trace_token)
      File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/command_runner.py", line 280, in RunNamedCommand
        return_code = command_inst.RunCommand()
      File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/commands/cp.py", line 998, in RunCommand
        self.op_failure_count, plural_str, plural_str))
    CommandException: CommandException: 1 file/object could not be transferred.

确保您正在传输的文件在传输过程中发生了更改。就我而言,问题是我将输出重定向到日志文件,同时日志文件也在传输到云端,这导致了上述问题。

使用 WSL2?

WSL 有一个 well known issue 导致时间不同步。

就我而言,似乎是时间不同步导致 ResumableUploadAbortException

要修复它,只需从 WSL 2 同步时间:sudo nohup watch -n 10 ntpdate time.windows.com > /dev/null 2>&1 &

gsutil 命令建议“删除跟踪器文件”来解决问题。这确实为我解决了问题:

rm -rf ~/.gsutil/tracker-files