gsutil下载失败如何恢复下载

1 问题描述

  使用gsutil下载过程中,由于网络等因素导致下载失败,通常情况下会报出如下错误,但是并没有给出具体哪些文件失败,这应该如何解决呢?

CommandException: 177 files/objects could not be transferred.ETA 42:35:46 

2 再次运行原指令

  其实gsutil有自动续传的功能,可以直接再次运行之前应用的下载指令进行下载。但是经过测试,这个功能应用需要谨慎,因为不是所有情况都能使用再次运行进行恢复,有时候他会将所有文件(包括已经下载完成的)从头重新下载,故不推荐这种方案。

3 找出失败文件批量下载

  在gsutil批量下载的本地的文件夹内,下载过程中会出现两种文件,一种文件是正常的选中下载的文件,另外一种是{选中的文件名}_.gstmp格式的文件。.gstmp文件是还没有下载完成的文件的缓存文件,你所失败的文件一般都会产生一个.gstmp文件,故我们想要继续下载它们可以按照以下思路完成:

  1. 获得未下载完成的文件列表
  2. 制作一个批量下载多文件的gsutil指令
  3. 进行下载

下面我们详细讲述一下实现方法

3.1 获得文件列表

  如果下载过程中断,那么可能没有被下载的文件还没有开始被写成.gstmp文件,此时你需要去google云服务器上,找到所有文件列表然后排除已经完成下载的文件。这种情况我没有遇到过,我仅对所有未下载文件均已经有了自己对应的.gstmp文件的这种情况进行阐述。

  1. 打开本地文件的保存目录Ctrl+A全选文件;

  2. 打开LibreOffice Calc(Windows下也可以使用Excel);

  3. Ctrl+V粘贴文本,完成后所有文件应该都会分行排列成一列;

  4. 如下图所示,1.选中文字整列→2.点击“筛选”→3.点击下拉菜单→4.输入包含的文字“_.gstmp”→5.确定,即将所有.gstmp文件行筛选得出;
    在这里插入图片描述

  5. 选中最上面的单元格,同时按Ctrl+Shift+↓选中所有筛选出来的文字

  6. 新建一个表格页,粘贴

  7. 进行文字分列,1.选中整列→2.单击“数据”→3.单击“文字分列”
    在这里插入图片描述

  8. 设置分列关键字符如下图所示,1.选中“分隔”→2.选择“其他”→3.输入“/”→4.单击“确定”;
    在这里插入图片描述

  9. 分列效果如下,然后选中前面不需要的列→“删除列”;
    在这里插入图片描述

  10. Ctrl+H调出“替换”,使用替换功能删除.gstmp,以及添加字符以保证符合gsutil的语法规则
    在这里插入图片描述
    在这里插入图片描述

3.2 制作gsutil下载指令

  1. 最终各文件的正确网址如下所示,选中整列→Ctrl+C复制
    在这里插入图片描述
  2. 打开“文本编辑器”粘贴,并使其符合gsutil多文件批量下载的语法,如下所示。注意“\”是换行标志“…”是笔者加的省略标志。关于gsutil的cp命令可以参考官方手册
gsutil -m cp \
  "gs://waymo_open_dataset_v_1_3_2/individual_files/validation/segment-5973788713714489548_2179_770_2199_770_with_camera_labels.tfrecord" \
...
  "gs://waymo_open_dataset_v_1_3_2/individual_files/validation/segment-2895681525868621979_480_000_500_000_with_camera_labels.tfrecord" \
  .

3.3 下载

  1. 将上述文本占贴进终端进行下载,注意由于google云服务器在国外,故需要对网络进行处理。

另外,这里只是举一个例子,可以有很多方法实现同样的效果,大家可以自行探索。

4 补充说明

  纵使我们可以继续下载,但是经过测试这些.gstmp文件已经下载的部分还是没有利用上,也就是说是从0下载。那么该如何让它能充分利用.gstmp文件呢?或许可以从~/.gsutil/tracker-files/路径下的下载跟踪文件.etag文件下手,但是笔者并没有进行实验,读者可以进行测试,并留言告诉大家。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值