AWS загружает папку в S3 как tar.gz без локального сжатия

2608
Michael Samsung

В AWS CLI как загрузить папку в виде tar.gzфайла, не создавая tar.gzлокально?

Например, у меня есть папка, /var/testи я хочу загрузить ее в/tests/test1.tar.gz

Как мне сделать это, не превращая его в tar.gzлокально? (Я хочу сэкономить локальное пространство, так как у меня мало места на жестком диске.)

4

1 ответ на вопрос

7
Bob

То, что вы действительно ищете, это не сохранение локального файла. Вы можете использовать трубы, чтобы отправить данные с tarпомощью, gzipчтобы s3ничего не сохраняя на диск.

tar c /var/test | gzip | aws s3 cp - "s3://tests/test1.tar.gz" 

Разбиваем это (где stdinи stdoutссылаемся на стандартные потоки ввода / вывода через конвейер):

  • tar c /var/testсоздает tarархив /var/testи выводит его в stdout...
  • ... который читается gzipиз stdin, а файл gzipped ( .tar.gz) выводится в stdout...
  • ... который читается aws s3 cp - "s3://tests/test1.tar.gz"с stdinи отправляется на S3. Он -сообщает CLI CLI о необходимости копирования stdin.

Это все еще выполняет gzipоперацию локально, но не требует создания временного файла, так как весь поток передается прямо по сети.

Боб, этот ответ выглядит так, как будто он подходит для файлов SSHing на другие серверы, но, похоже, не решает вопрос о том, как загрузить его на S3. Вероятно, это достаточно простое расширение для тех, кто понимает инструменты командной строки S3, чтобы применить эту технику. Tim 6 лет назад 0
@ Тим ... как-то, я полностью пропустил это. Я обновлю. Bob 6 лет назад 0
@Tim Исправлено. Вероятно, только посмотрел на бит AWS и предположил, что EC2 в полусне прошлой ночью. Bob 6 лет назад 1
Несколько вопросов об этом решении: - будет ли оно работать и с каталогами? - будет ли все содержимое файлов загружаться в память? Разве это не вызывает проблем с большими файлами? - есть ли способ увидеть прогресс? murze 5 лет назад 1
@murze (1) конечно, в этом весь смысл упаковки, (2) нет, (3) нет, (4) нет. Ekevoo 5 лет назад 1
Будет `tar -cz / var / test | aws s3 cp - "s3: //tests/test1.tar.gz" `также работает? Я передаю `-z` для gzip во время команды tar, а не для передачи по ней. Keven 5 лет назад 0
@Kevin Я не понимаю, почему нет. Bob 5 лет назад 0

Похожие вопросы