Ist es möglich, von stdin nach gzip zu pfeifen?

11

Wenn ich den Befehl ausführe, s3cmd get s3://bucket/file.gz -erhalte ich eine Binärausgabe auf dem Bildschirm. Wenn ich versuche, dies an gzip mit zu leiten, s3cmd get s3://bucket/file.gz - | zcatbekomme ich gzip: stdin: not in gzip format.

Wie kann ich zcatdie Eingabe auswählen stdin?

KalenGi
quelle

Antworten:

17

gzipund seine Hilfsbefehle werden standardmäßig alle aus STDIN gelesen. Wir können dies mit einem wirklich einfachen Test testen:

$ echo testing | gzip | zcat
testing

Oder etwas Exotischeres, um zu beweisen, dass das kein Zufall war:

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

Das deutet darauf hin, dass Ihre s3cmdAusgabe in irgendeiner Weise verschmutzt oder fehlerhaft ist. Versuchen Sie, in eine Datei umzuleiten (anstatt einen echten Dateinamen anzugeben) und dann die Ausgabe in so etwas wie zu betrachten head. Oder laden Sie es richtig herunter und vergleichen Sie es.

Oli
quelle
Ich denke, Sie haben Recht mit der s3cmdAusgabe. Ich habe meinen Ansatz geändert und curlstattdessen verwendet.
KalenGi