Можно ли использовать 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_