Gzip có thêm tính toàn vẹn / crc kiểm tra vào .tar không?


12

Tôi chạy các lệnh:

tar -cf myArchive.tar myDirectory/
gzip myArchive.tar

sau đó tôi sao chép tệp qua nhiều phương tiện không đáng tin cậy và sau đó tôi giải nén nó bằng cách sử dụng:

tar -xzf myArchive.tar.gz

Thực tế là tôi đã nén tar-ball, liệu bằng cách nào đó có đảm bảo tính toàn vẹn hay ít nhất là CRC của nội dung được giải nén không?

Câu trả lời:


15

tarbản thân nó không viết ra một tổng kiểm tra cho phần tổng hợp sau này. Nếu bạn gziptarlưu trữ, bạn có thể có chức năng đó.

tarsử dụng compress. Nếu bạn sử dụng -Zcờ trong khi tạo tệp lưu trữ tarsẽ sử dụng compresschương trình khi đọc hoặc viết tệp lưu trữ. Từ gziptrang hướng dẫn:

Định dạng nén tiêu chuẩn không được thiết kế để cho phép kiểm tra tính nhất quán.

Nhưng, bạn có thể sử dụng -ztham số. Sau đó tarđọc và viết lưu trữ thông qua gzip. Và gzipviết một tổng kiểm tra crc. Để hiển thị tổng kiểm tra đó, sử dụng lệnh đó:

$ gzip -lv archive.tar.gz
method  crc     date  time           compressed        uncompressed  ratio uncompressed_name
defla 3f641c33 Sep 25 14:01               24270              122880  80.3% archive.tar

Từ gziptrang hướng dẫn:

Khi sử dụng hai định dạng đầu tiên ( có nghĩa là gzip hoặc zip ), gunzip sẽ kiểm tra CRC 32 bit.


5

Có, định dạng tệp gzip chứa tổng kiểm tra CRC-32 có thể được sử dụng để phát hiện nếu kho lưu trữ bị hỏng.

Tất nhiên, trong khi tổng kiểm tra cho phép gzip cho bạn biết rằng kho lưu trữ bị hỏng, thì thực tế nó không làm gì để giúp bạn khôi phục dữ liệu bên trong kho lưu trữ. Do đó, nó hầu như hữu ích cho những việc như kiểm tra xem một kho lưu trữ mà bạn vừa tải xuống từ web thực sự đã được tải xuống một cách chính xác.

Nếu bạn thực sự lo lắng về việc lưu trữ hoặc truyền tài liệu lưu trữ của mình qua phương tiện không đáng tin cậy, bạn có thể muốn xem xét sử dụng định dạng lưu trữ như mệnh thực sự cung cấp sửa lỗi ngoài phát hiện lỗi. Tất nhiên, mặt trái của các định dạng như vậy là sự dư thừa cần thiết cho việc sửa lỗi nhất thiết phải tăng kích thước tệp lên một chút.


4

tarkhông có kiểm tra tính toàn vẹn. Thí dụ:

$ echo JJJJJJJJJJJJJJJJJJ > b
$ tar cvf a.tar b
$ sed -i s/JJJJJJJJJJJJJJJJJJ/tttttttttttttttttt/g a.tar
$ tar xvf a.tar
$ cat b

tttttttttttttttttt

Xem, nội dung a.tarlưu trữ đã thay đổi, vì vậy tệp bcó nội dung hoàn toàn khác nhau, nhưng tar không nhận thấy điều này. Điều này đúng với bất kỳ tar nào, kể cả tar-1.28 (mới nhất) với cả hai định dạng tar --format=gnu --format=posix. Các paxlệnh (đọc tar thay thế) pax -r < a.tarcũng không nhận thấy sự thay đổi lưu trữ.


2
OP có vẻ là ý thức (hoặc ít nhất là nghi ngờ) mà tar(ít nhất là không có sự -zlựa chọn) không làm kiểm tra tính toàn vẹn. Ngoài ra, câu trả lời được chấp nhận nêu điều này. Câu hỏi là: gzip(hoặc việc sử dụng -ztùy chọn) có thêm kiểm tra tính toàn vẹn không?
G-Man nói 'Phục hồi Monica'

G-Man đúng, Đây có thể là một câu trả lời ổn nếu nó cũng bao gồm phần gzip và chứng minh rằng gzip không phát hiện ra rằng nội dung đã thay đổi.
Aksel Willgert

2

Nếu tar tìm thấy lỗi khi giải nén, nó sẽ in một thông báo và thoát với giá trị thoát khác không. Hành vi này độc lập với thuật toán nén được sử dụng sau khi tệp tar được tạo.

Nếu bạn muốn xác minh rằng tệp đã được gửi thành công đến đích qua một liên kết không đáng tin cậy, thì hãy tạo tổng md5 của tệp trước khi gửi và xác minh tổng md5 sau khi nhận.


nếu tôi chỉ quan tâm đến tính toàn vẹn của nội dung được giải nén. md5 trên tar không thêm bất cứ điều gì so với tar kiểm tra trong unpackinng?
Aksel Willgert

Tính toàn vẹn của nội dung bên trong kho lưu trữ tar được chăm sóc bởi tarchính nó. Bạn có thể thêm một lớp bổ sung nếu cần: Nếu tính toàn vẹn của tệp tar được xác minh, thì nội dung bên trong kho lưu trữ tar cũng ổn. Nhưng tất cả những gì cần được quan tâm bởi giao thức được sử dụng để chuyển dữ liệu ở vị trí đầu tiên.
Jan

-1

Gói PKZip (win / dos) đi kèm với một chương trình có tên PKZipFix có thể khôi phục các tệp từ kho lưu trữ bị hỏng. Tôi đã sử dụng tiện ích này trong quá khứ, nó có thể khôi phục các tập tin từ kho lưu trữ bị hư hỏng vừa phải mà không giải nén được.

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.