s4cmd 的问题

Issues with s4cmd

我有大约 50GB 的数据要上传到 S3 存储桶,但 s3cmd 不可靠且非常慢。由于超时错误,同步似乎无法正常工作。

我切换到 s4cmd 它运行良好,多线程且速度很快。

     s4cmd dsync -r -t 1000 --ignore-empty-source forms/ s3://bucket/J/M/

上面上传一组文件然后抛出错误- [线程失败] 无法从源读取数据:/home/ubuntu/path 到文件 源文件包含一个图像文件,所以没有错。

s4cmd 有诸如 --retry 之类的选项,可以让命令在失败时重新启动,但这似乎也不起作用。 如果您遇到了防止此错误的解决方案,请分享。

我让它运行良好。我很高兴我的文件上传速度超快。如果您仍在使用 s3cmd,我强烈建议您切换到 s4cmd!

下载并安装 s4cmd。找到 s4cmd.py 并替换为以下 -

    @log_calls
  def read_file_chunk(self, source, pos, chunk):
    '''Read local file cunks'''
    data = None
    with open(source, 'rb') as f:
      f.seek(pos)
      data = f.read(chunk)
    if not f:
      raise Failure('Unable to read data from source: %s' % source)
    return StringIO(data)

然后调用s4cmd.py上传命令如

/pathtodir/s4cmd.py dsync -r forms/ s3://bucket/J/M/