Apakah mungkin untuk pipa dari stdin ke gzip?

11

Jika saya menjalankan perintah s3cmd get s3://bucket/file.gz -saya mendapatkan output biner di layar. Jika saya mencoba untuk pipa ini ke gzip dengan s3cmd get s3://bucket/file.gz - | zcatsaya dapatkan gzip: stdin: not in gzip format.

Bagaimana saya bisa zcatmengambil inputnya stdin?

KalenGi
sumber

Jawaban:

17

gzipdan semua perintah tambahannya dibaca dari STDIN secara default. Kami dapat menguji ini dengan tes yang sangat sederhana:

$ echo testing | gzip | zcat
testing

Atau sesuatu yang lebih eksotis untuk membuktikan bahwa itu bukan kebetulan:

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

Itu menunjukkan kepada saya bahwa s3cmdoutput Anda kotor atau cacat dalam beberapa cara. Coba redirect ke file (daripada memberikan nama file nyata) dan kemudian melihat output dalam sesuatu seperti head. Atau unduh dengan benar dan bandingkan.

Oli
sumber
Saya pikir Anda benar tentang s3cmdhasilnya. Saya mengubah pendekatan saya dan menggunakannya curl.
KalenGi