stdinからgzipにパイプすることは可能ですか?


11

コマンドを実行するs3cmd get s3://bucket/file.gz -と、画面にバイナリ出力が表示されます。私はパイプにしようと、これはgzip圧縮するためのs3cmd get s3://bucket/file.gz - | zcat私を得ますgzip: stdin: not in gzip format

どのようにしてzcat入力を選択できstdinますか?

回答:


17

gzipとその補助コマンドはすべてデフォルトでSTDINから読み込まれます。これは非常に簡単なテストでテストできます。

$ echo testing | gzip | zcat
testing

または、それがまぐれではなかったことを証明するためのよりエキゾチックな何か:

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

これは、s3cmd出力が汚いか、何らかの形で不正であることを示唆しています。(実際のファイル名を提供するのではなく)ファイルにリダイレクトしてから、などの出力を確認してくださいhead。または、適切にダウンロードして比較します。


私はあなたがs3cmd出力について正しいと思います。私は自分のアプローチを変えてcurl代わりに使った。
KalenGi 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.