Trên Linux / Unix, vấn đề .tar.gz so với .zip?


69

Các chương trình đa nền tảng đôi khi được phân phối dưới dạng .tar.gz cho phiên bản Unix và .zip cho phiên bản Windows. Điều này có ý nghĩa khi nội dung của mỗi phải khác nhau.

Tuy nhiên, nếu nội dung sẽ giống nhau, sẽ đơn giản hơn nếu chỉ có một lần tải xuống. Windows thích .zip vì đó là định dạng mà nó có thể xử lý. Có vấn đề gì với Unix không? Đó là, hôm nay tôi đã thử giải nén một tệp trên Ubuntu Linux và nó hoạt động tốt; Có bất kỳ vấn đề nào với điều này trên bất kỳ hệ điều hành giống Unix hiện tại nào không, hoặc chỉ cần cung cấp một tệp .zip trên bảng?

Câu trả lời:


28

Necromance.
Vâng, nó quan trọng.
Trên thực tế, nó phụ thuộc.

tar.gz

  • Lưu trữ các thuộc tính tệp unix : uid, gid, quyền (đáng chú ý nhất là thực thi). Mặc định có thể phụ thuộc vào phân phối của bạn và có thể được bật với các tùy chọn.
  • Hợp nhất tất cả các tệp sẽ được lưu trữ trong một tệp ("Băng ARchive").
  • Nén thực tế được thực hiện bởi GZIP, trên một tệp .tar

khóa kéo

  • Lưu trữ các thuộc tính MSDOS . (Lưu trữ, chỉ đọc, ẩn, hệ thống)
  • Nén từng tệp riêng lẻ, sau đó hợp nhất các tệp được nén riêng lẻ trong một tệp
  • Bao gồm một bảng tập tin ở cuối tập tin

Vì zip nén các tệp riêng lẻ, nên một kho lưu trữ zip rất có thể sẽ có kích thước lớn hơn (đặc biệt là với nhiều tệp nhỏ hơn - nghĩ các tệp cấu hình).

Vì vậy, bạn thấy, xuất hiện từ kích thước tệp, nếu bạn nén một loạt tệp trên Linux / Unix và sau đó giải nén chúng, các thuộc tính tệp sẽ biến mất (ít nhất là các tệp không được MS-DOS hỗ trợ - phụ thuộc vào ZIP nào -Phần mềm bạn sử dụng). Điều này có thể quan trọng, hoặc có thể không, trong trường hợp đó không thành vấn đề (vì sự khác biệt kích thước tệp trong hầu hết các trường hợp không đáng kể).


10
bản phân phối chuẩn của zip trên các hệ thống giống như unix (thông tin-zip) cũng lưu trữ các thuộc tính tệp unix.
Erik Aronesty

35

tar gz tốt hơn cho Linux / Unix vì nó vẫn giữ quyền, chẳng hạn như "thực thi" trên các tập lệnh.


8
Tiện ích Lưu trữ của OS X và các quyền bảo vệ zip / giải nén, nhưng có thể có các tiện ích khác không có.
Lri

4
Các công cụ zip / giải nén tiêu chuẩn (thông tin-zip) giữ quyền trên linux và dấu thời gian trên windows. xem: en.wikipedia.org/wiki/Info-ZIP để biết các khả năng điển hình ... khắc phục các vấn đề về quyền và giới hạn kích thước tệp trong khi vẫn giữ quyền truy cập ngẫu nhiên mong muốn và các thuộc tính lưu trữ có thể chỉnh sửa.
Erik Aronesty

33

Hầu hết các bản phân phối Linux phổ biến hiện nay đều được trang bị zipkhả năng tương thích. Nhưng như đã nêu bởi nc3b, targzipphổ biến hơn trên các hệ thống Linux / Unix. Nếu bạn cần khả năng tương thích 95% trên các hệ thống này, hãy cân nhắc sử dụng targzip. Nếu bạn chỉ cần 85%, zipsẽ làm tốt.


2
Được rồi, 95% tốt hơn 85% :-) Một câu hỏi rất nhỏ, có vấn đề gì không nếu phần mở rộng tệp là .tgz thay vì .tar.gz?
rwallace

8
Tiện ích mở rộng hoàn toàn không thành vấn đề, nó chỉ được sử dụng để tham khảo bởi người dùng và chương trình. Nếu tiện ích mở rộng là .XXX và bạn biết đó là .tar, bạn vẫn có thể sử dụng tar để gỡ rối. .tgz và .tar.gz trên thực tế đều là các phần mở rộng và tệp giống nhau với các phần mở rộng này sẽ giống nhau.
BloodPhilia

2
Mặt khác, để tương thích 100% trên Windows, bạn sẽ cần sử dụng taxi.
kinokijuf

3
tar sẽ lưu trữ uid, gid và quyền, chẳng hạn như + x trên các hệ thống unix. lưu trữ zip lưu trữ, chỉ đọc, ẩn và hệ thống trên các hệ thống cửa sổ.
Andrew De Andrade

1
@mtak bạn luôn có thể sử dụng gunzip --suffix .zip npm-debug.log.ziphoặcgunzip -c < npm-debug.log.zip > npm-debug.log
Iwan Aucamp

19

tar / gzip là một định dạng khá nhảm nhí vì kho lưu trữ không thể được truy cập ngẫu nhiên, cập nhật, xác minh hoặc thậm chí được thêm vào ... mà không phải giải nén toàn bộ kho lưu trữ.

zip tốt hơn nhiều về vấn đề đó .... bạn có thể nhanh chóng có được nội dung của tệp zip, nối vào nó mà không cần giải nén phần đầu tiên, v.v.

zip có một số giới hạn kích thước ... tùy thuộc vào phiên bản "zip" mà bạn sử dụng ... và đây có thể là một vấn đề. nhưng công cụ zip thông tin tiêu chuẩn đi kèm với hầu hết các hệ điều hành giống như linux không có giới hạn kích thước và duy trì quyền truy cập tệp tốt.

xem: https://en.wikipedia.org/wiki/Info-ZIP để biết các khả năng


Bạn đang nói về loại hạn chế nào?
Pacerier

chỉnh sửa và cung cấp một liên kết
Erik Aronesty

9

Các bản cài đặt Unix của Barebones không chứa unzip (tức là cài đặt máy chủ), nhưng chúng luôn chứa targzip . Nếu đối tượng của bạn là máy chủ, tôi sẽ dùng gzip .

Ngoài ra gzip có độ nén lớn hơn zip , vì vậy tệp sẽ nhỏ hơn.


1
Tôi sẽ không nói gzip nén tốt hơn ZIP. Cả hai đều sử dụng cùng một thuật toán DEFLATE và tất cả các so sánh tôi đã thực hiện đều cho kết quả tương tự về kích thước tệp.
grawity

4
Chà, tar.gz sẽ nén toàn bộ tệp trong một lần, trong khi zip nén các tệp riêng lẻ. Đối với nhiều tệp nhỏ, cách tiếp cận đầu tiên thường sẽ tạo ra các tệp nhỏ hơn đáng chú ý, vì các khoản dự phòng có thể được sử dụng trên các tệp. Sự khác biệt không phải là lớn mặc dù.
sleske

3

Vâng, nó quan trọng. Tar là một cung thủ. Và trong tar.gz, chúng tôi nén kho lưu trữ đó.

Zip là cả một lưu trữ và máy nén.

Nếu bạn so sánh nén, theo kinh nghiệm của tôi, gzip tốt hơn nhiều so với zip.

Và sự khác biệt đáng kể khác được đề cập trong một câu trả lời khác . Nếu bạn có một kho lưu trữ tệp rất lớn và muốn trích xuất một tệp nhỏ, Zip cho phép bạn làm điều đó. Nhưng với tar.gz, bạn cần trích xuất toàn bộ kho lưu trữ.


Không phải là một kho lưu trữ các tệp được nén, mà là một tệp nén của các tệp được lưu trữ. Đó là lý do tại sao bạn phải trích xuất toàn bộ kho lưu trữ.
m93a

2

Quyết định về cơ bản thuộc về những điều này:

  • GZIP giữ quyền truy cập tệp Unix , vì các tệp được phép thực thi.

  • Trên ZIP Mặt khác làm việc ra khỏi hộp trong Windows.


1

targziprất phổ biến trên * nix-es hơn unzip. Ví dụ, tại thời điểm trên vòm của tôi - 2009,08 không có unzip.


6
Nhưng có bsdtar(một phần libarchive), xử lý ZIP tốt.
grawity

Rất tiếc: "> Không biết về điều đó. Cảm ơn! :-)
nc3b
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.