我想做类似以下的事情,但它不起作用:
wget http://www.blob.com/file | s3cmd 把 s3://mybucket/file
这可能吗?
不能说话,s3cmd
但绝对有可能。
您可以使用https://github.com/minio/mc。Minio Client akamc
是用 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
要回答有关的问题s3cmd
:不,它不能(当前)从STDIN
.
它确实支持多部分上传,也支持流式传输 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