Можно ли использовать s3cmd для загрузки файла и загрузки на s3 без локального хранения?

Я хотел бы сделать что-то вроде следующего, но это не работает:

wget http://www.blob.com/file | s3cmd положить s3://mybucket/file

Это возможно?

1 ответ

Не могу говорить за s3cmd но это определенно возможно.

Вы можете использовать https://github.com/minio/mc. Minio Client aka mc написан на Golang, выпущен под лицензией Apache версии 2.

Это реализует mc pipe команда для пользователей для потоковой передачи данных напрямую в Amazon S3 из входящих данных по каналу / os.stdin. 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_

Другие вопросы по тегам