Có thể đường ống từ stdin đến gzip?


11

Nếu tôi chạy lệnh, s3cmd get s3://bucket/file.gz -tôi nhận được đầu ra nhị phân trên màn hình. Nếu tôi cố gắng chuyển cái này sang gzip thì s3cmd get s3://bucket/file.gz - | zcattôi nhận được gzip: stdin: not in gzip format.

Làm thế nào tôi có zcatthể chọn đầu vào từ đó stdin?

Câu trả lời:


17

gzipvà các lệnh phụ của nó đều được đọc từ STDIN theo mặc định. Chúng tôi có thể kiểm tra điều này với một bài kiểm tra thực sự đơn giản:

$ echo testing | gzip | zcat
testing

Hoặc một cái gì đó kỳ lạ hơn để chứng minh rằng đó không phải là một con sán:

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

Điều đó cho tôi thấy rằng s3cmdđầu ra của bạn bị bẩn hoặc không đúng cách theo một cách nào đó. Hãy thử chuyển hướng đến tệp (thay vì cung cấp tên tệp thực) và sau đó xem đầu ra trong một cái gì đó như head. Hoặc tải về đúng cách và so sánh.


Tôi nghĩ bạn đúng về s3cmdđầu ra. Tôi đã thay đổi cách tiếp cận của tôi và sử dụng curlthay thế.
KalenGi 11/03/2016
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.