本文介绍在使用ossutil时可能出现的问题及处理方法。

说明 本文各命令行示例均基于Linux 64位系统,其他系统请将命令开头的./ossutil64替换成对应的Binary名称。详情请参见命令行工具ossutil快速入门

使用-u参数上传文件时出现skip提示

问题分析:使用-u参数上传文件的时候,ossutil会将上传文件和存储空间(Bucket)内已有文件进行一次比对。若发现上传的文件与目标Bucket内已有文件同名,且该文件的最后修改时间早于或等于Bucket内已有文件,上传时会跳过该文件;若该文件的最后修改时间晚于Bucket内已有文件,则重新上传该文件。所以使用-u参数上传文件时出现skip提示是正常现象。

解决方案:确认Bucket内文件上传无问题后忽略该提示。

文件解冻时出现403报错

问题分析:操作解冻文件的过程中出现403,有以下两种可能性。
  • 若您是使用子账号操作文件,可能是子账号权限不足,无目标文件的操作权限。
  • 您文件内容违禁OSS被封禁了。
解决方案:
  • 子账号权限不足:增加子账号权限。
  • 文件内容违禁:删除或忽略该文件。

使用ls命令查看Bucket无文件,删除Bucket时报错

问题分析:使用ls命令列举Bucket内的文件且未携带任何选项时,无法列举碎片、历史版本文件(仅存在于开启过版本控制的Bucket)。若Bucket为非空(即Bucket中存在碎片、历史版本文件),仅使用rm命令无法删除该Bucket。

解决方案:
  • 先删除碎片和历史版本文件(未开启过版本控制请忽略),再删除Bucket。
    1. 删除碎片和历史版本文件。
      • 列举并删除碎片:
        ./ossutil64 ls oss://bucket1 -m
        ./ossutil64 rm -m oss://bucket1 -r
      • 列举并删除历史版本文件:
        ./ossutil64 ls oss://bucket1 --all-versions
        ./ossutil64 rm oss://bucket1 --all-versions -r
    2. 删除Bucket。
      ./ossutil64 rm oss://bucket1 -b
  • 强制删除Bucket。
    • 若存储空间未开启版本控制,使用如下命令强制删除Bucket:
      ./ossutil64 rm oss://bucketname -abrf
    • 若存储空间已开启版本控制,使用如下命令强制删除Bucket:
      ./ossutil64 rm oss://bucketname -abrf --all-versions
警告 Bucket及文件被删除后,无法恢复,请谨慎使用该命令。

文件上传、下载进度超过100%

问题分析:ossutil在上传、下载文件时,会自动生成一个名为.ossutil_checkpoint文件夹。当目标文件超过100 MB时,ossutil默认使用断点续传上传或下载目标文件,并将过程中生成的断点信息文件保存在.ossutil_checkpoint文件夹中。上传、下载任务完成后,会自动删除这个文件夹。若单机运行超过一个ossutil实例,且都在进行上传或下载任务,当其中一个ossutil的任务完成后,会自动删除.ossutil_checkpoint文件夹,导致其它需要使用断点续传的ossutil任务进度超过100%且无法完成。

解决方案:
  • 将当前任务结束,重新开始上传、下载任务。
  • cp命令中加上--checkpoint-dir参数,并手动指定一个与默认checkpoint文件夹不同名的文件夹。例如:
    ./ossutil64 cp oss://bucket1/myphoto.jpg  /dir  --checkpoint-dir checkpoint

使用ossutil发起单个文件的下载请求,但OSS日志里面有多条请求记录

问题分析:出现该问题有两种可能。
  • 请求异常或请求失败时,ossutil会进行重试操作,默认为10次。
  • 如果您下载的文件超过100 MB,ossutil会使用range方式去请求,即每次请求该文件的部分内容,通过多次请求完成完整文件的下载。因此,超过100 MB的文件下载时也会产生多条请求记录 。