É possível canalizar de stdin para gzip?

11

Se eu executar o comando s3cmd get s3://bucket/file.gz -, obtenho uma saída binária na tela. Se eu tentar canalizar isso para gzip com s3cmd get s3://bucket/file.gz - | zcateu recebo gzip: stdin: not in gzip format.

Como posso zcatescolher sua entrada stdin?

KalenGi
fonte

Respostas:

17

gzipe seus comandos auxiliares, todos lidos no STDIN por padrão. Podemos testar isso com um teste realmente simples:

$ echo testing | gzip | zcat
testing

Ou algo mais exótico para provar que não foi por acaso:

$ dd if=/dev/urandom of=bigfile bs=1024 count=102400
102400+0 records in
102400+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 6.42114 s, 16.3 MB/s

$ sha1sum bigfile 
25b4832d3e738e70721d86695ea7a767a3afb229  bigfile

$ cat bigfile | gzip | zcat | sha1sum 
25b4832d3e738e70721d86695ea7a767a3afb229  -

Isso sugere para mim que sua s3cmdsaída está suja ou deformada de alguma forma. Tente redirecionar para o arquivo (em vez de fornecer um nome de arquivo real) e depois observe a saída em algo como head. Ou faça o download corretamente e compare.

Oli
fonte
Eu acho que você está certo sobre a s3cmdsaída. Mudei de abordagem e usei curl.
KalenGi