A pasta de upload da AWS para o S3 como tar.gz sem compactar localmente

4

No AWS CLI, como eu carrego uma pasta como um arquivo tar.gz sem criar um tar.gz localmente?

Por exemplo, eu tenho uma pasta em /var/test e quero enviá-la para /tests/test1.tar.gz

Como faço isso sem transformá-lo em tar.gz localmente? (Eu quero salvar o espaço local, pois não tenho muito espaço no meu disco rígido.)

    
por Michael Samsung 07.09.2017 / 17:00

1 resposta

6

O que você realmente procura não é salvar um arquivo local. Você pode usar canais para enviar os dados de tar a gzip to s3 sem salvar nada no disco.

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

Quebrar isso (onde stdin e stdout referem-se aos fluxos de entrada / saída padrão por meio do pipeline ):

  • tar c /var/test cria um arquivo tar de /var/test e gera o resultado em stdout ...
  • ... que é lido por gzip de stdin e o arquivo gzipped ( .tar.gz ) é enviado para stdout ...
  • ... que é lido por aws s3 cp - "s3://tests/test1.tar.gz" de stdin e enviado para o S3. O - informa ao AWS CLI para copiar de stdin .

Isso ainda executa a operação gzip localmente, mas não exige a criação de um arquivo temporário, já que o fluxo inteiro é enviado diretamente pela rede.

    
por 07.09.2017 / 17:18