コマンドs3cmd get s3://bucket/file.gz -
を実行すると、画面にバイナリ出力が表示されます。これをs3cmd get s3://bucket/file.gz - | zcat
でgzipにパイプしようとすると、gzip: stdin: not in gzip format
が返されます。
zcat
を取得してstdin
からの入力を選択するにはどうすればよいですか?
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
などの出力を確認してください。または、適切にダウンロードして比較します。