有没有一种方法可以在不同的机器上使用gsutil cp(而不是REST API)执行可恢复的上传



gsutil cp失败时,我们可以通过在同一台机器上运行完全相同的命令来恢复会话(会话通过~/.gsutil/tracker文件进行跟踪(。但是,当我们切换机器时,该目录不再存在,因此当运行相同的命令时,会话不会恢复。请参阅可恢复上载(CLI(和可恢复传输的背景。

或者,我看到使用ResumeableUploads(RESTAPI(,我们可以生成一个会话URI,并将该URI传递给不同的命令。但是,在这里列出的gsutil cp选项中,我看不到传递会话URI的选项。

有了这些信息,通过gsutil CLI恢复会话的唯一方法是在不同的机器之间共享~/.gsutil/tracker文件卷吗?

gsutilgcloud alpha storage都使用本地跟踪器文件来处理恢复上载,因此,如果您想在其他地方恢复操作,则需要将这些文件复制到新机器上。

正如你所指出的,API本身提供了一个;会话URI";可以用来查询上传进度并从任何地方恢复上传,但我不认为在任何一个命令行实用程序中明确指定它是一个选项。

不过,我们的客户端库确实支持它。如果从不同的机器恢复上传是您工作流程的常规部分,您可能会编写一个小型的自定义上传程序。下面是一个如何在C++客户端中使用可恢复上传的示例。关键部分是:

gcs::ObjectWriteStream stream =
client.WriteObject(bucket_name, object_name,
gcs::RestoreResumableUploadSession(session_id));
std::cout << "I should start writing from byte " << stream.next_expected_byte();

最新更新