2015-03-09 21 views
12

Tôi đã nén thư mục trên Mac OSX bằng dòng lệnh zip và tùy chọn -r. Tôi scp.zip cho một cụm hoạt động trên Linux.Lỗi khi `tar` a` .zip` trên Linux

Nếu tôi cố gắng để giải nén các .zip với

tar -vxzf foo.zip

trên máy tính của tôi nó hoạt động. Nhưng cùng một lệnh không hoạt động trên cluster. Tôi gặp lỗi

gzip: stdin has more than one entry--rest ignored 
tar: Child returned status 2 
tar: Error is not recoverable: exiting now 

Làm cách nào để giải quyết vấn đề này?

Trả lời

25

Lệnh để giải nén lưu trữ TAR, chứ không phải tệp zip. Bạn nên sử dụng unzip lệnh thay vì tar:

unzip foo.zip 

Hoặc tạo ra một kho lưu trữ tar.gz ở phía bên Mac thay vì một tập tin zip

tar -cvzf foo.tar.gz .... 

mà bạn có thể giải nén với tar lệnh hiện tại của bạn ở phía bên Linux.

+0

Âm thanh hiển nhiên bây giờ +1. Tôi thực sự không biết lưu trữ TAR là gì. Btw, tại sao 'tar' làm việc trên' .zip' trên máy Mac của tôi? Cảm ơn rất nhiều. –

+4

@ Remi.b tar trên Mac là một phiên bản của tar BSD chứ không phải là tar GNU được sử dụng trên các bản phân phối Linux. [Trang Apple Man] (https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/tar.1.html) đề xuất Mac tar có thể xử lý các tệp zip, nhưng GNU tar có thể ' t (ngoại trừ trường hợp giới hạn được mô tả trong câu trả lời khác). –

6

lỗi này:

gzip: stdin has more than one entry--rest ignored 

Nghĩa là tar đang cố gắng để giải nén lưu trữ zip của bạn như thể nó là một kho lưu trữ gzip, điều đó không phải lúc nào cũng làm việc (xem "Files created by zip can be uncompressed by gzip only if they have a single member compressed with the 'deflation' method" để biết thêm)

.

Thay vào đó, bạn nên sử dụng unzip foo.zip để giải nén tệp lưu trữ zip

2

GNU chuẩn tar không xử lý trực tiếp các tệp .zip. Tôi ngạc nhiên khi MacOSX xử lý nó.

Vấn đề là tar biết làm thế nào để xử lý gzip file, đó là không Thông tin-Zip (.zip) định dạng tập tin. Các tệp Info-Zip được thiết kế để xử lý cả lưu trữ và nén, trong khi tar thì không. (Hầu hết các triển khai tar hiện sẽ lọc tệp tar bằng máy nén/giải nén thích hợp dựa trên tùy chọn dòng lệnh.)

Sử dụng unzip trên cụm của bạn thay thế. Đó là chương trình được thiết kế để xử lý các tệp .zip. Bạn không nên cần tar.

Các vấn đề liên quan