È possibile eseguire il pipe da stdin a gzip?


11

Se eseguo il comando s3cmd get s3://bucket/file.gz -ottengo output binario sullo schermo. Se provo a reindirizzare questo a gzip con s3cmd get s3://bucket/file.gz - | zcatottengo gzip: stdin: not in gzip format.

Come posso zcatscegliere il suo input stdin?

Risposte:


17

gzipe i suoi comandi ausiliari vengono letti da STDIN per impostazione predefinita. Possiamo testarlo con un test davvero semplice:

$ echo testing | gzip | zcat
testing

O qualcosa di più esotico per dimostrare che non è stato un colpo di fortuna:

$ 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  -

Questo mi suggerisce che il tuo s3cmdoutput sia sporco o malformato in qualche modo. Prova a reindirizzare al file (piuttosto che fornire un vero nome file) e quindi guardare l'output in qualcosa del genere head. O scaricalo correttamente e confrontalo.


Penso che tu abbia ragione s3cmdsull'output. Ho cambiato il mio approccio e usato curlinvece.
KalenGi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.