可以使用s3cmd下载文件并上传到s3而不在本地存储吗?

时间:2014-07-29 18:03:34

标签: s3cmd

我想做类似以下的事情,但它不起作用:

wget http://www.blob.com/file | s3cmd把s3:// mybucket / file

这可能吗?

2 个答案:

答案 0 :(得分:2)

不能代表s3cmd,但绝对可以。

您可以使用https://github.com/minio/mc。 Minio Client aka mc是用Golang编写的,在Apache License Version 2下发布。

它为用户实现mc pipe命令,以便从管道/ os.stdin上的传入数据直接将数据流式传输到Amazon S3。 mc pipe也可以并行管道到多个目的地。内部mc管道输出输出并且并行地进行分段上传。

$ mc pipe
NAME:
   mc pipe - Write contents of stdin to files. Pipe is the opposite of cat command.

$ mc cat
NAME:
   mc cat - Display contents of a file.

实施例

#!/bin/bash

mc cat https://s3.amazonaws.com/mybucket/1.txt | mc pipe https://s3-us-west-2.amazonaws.com/mywestbucket/1.txt

答案 1 :(得分:0)

要回答有关s3cmd的问题:不,它不能(当前)read from STDIN

does support multi-part-uploadstreams to STDIN,但显然不是相反。

来自s3cmd的管道输出的工作方式如下:

s3cmd get s3://my-bucket/some_key - | gpg -d | tar -g /dev/null -C / -xvj

请注意,流式gzip文件可能存在问题:https://github.com/s3tools/s3cmd/issues/811