Czy możliwe jest przesyłanie strumieniowe ze standardowego na gzip?

12

Po uruchomieniu polecenia s3cmd get s3://bucket/file.gz -na ekranie pojawia się wyjście binarne. Jeśli spróbuję przesłać to do gzipa s3cmd get s3://bucket/file.gz - | zcat, dostaję gzip: stdin: not in gzip format.

Jak mogę zcatwybrać, z którego źródła pochodzi stdin?

KalenGi
źródło

Odpowiedzi:

17

gzipi wszystkie jego pomocnicze polecenia domyślnie są odczytywane ze STDIN. Możemy to przetestować za pomocą naprawdę prostego testu:

$ echo testing | gzip | zcat
testing

Lub coś bardziej egzotycznego, aby udowodnić, że to nie był przypadek:

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

To sugeruje mi, że twój s3cmdwynik jest w jakiś sposób brudny lub zniekształcony. Spróbuj przekierować do pliku (raczej podając prawdziwą nazwę pliku), a następnie spójrz na dane wyjściowe w coś podobnego head. Lub pobierz go poprawnie i porównaj.

Oli
źródło
Myślę, że masz rację co do s3cmdwyniku. Zmieniłem swoje podejście i curlzamiast tego zastosowałem .
KalenGi,