Thật không may, để giải nén thành viên duy nhất của .tar.gz
kho lưu trữ, bạn phải xử lý toàn bộ kho lưu trữ và bạn không thể làm gì nhiều để khắc phục nó.
Đây là nơi lưu trữ .zip
(và một số định dạng khác như .rar
) hoạt động tốt hơn nhiều, vì zip
định dạng có thư mục trung tâm của tất cả các tệp có trong đó với phần bù trực tiếp chỉ vào giữa zip
tệp, vì vậy các thành viên lưu trữ có thể được trích xuất nhanh chóng mà không cần xử lý toàn bộ.
Bạn có thể hỏi tại sao xử lý .tar.gz
quá chậm?
.tar.gz
(thường được rút ngắn là .tgz
) chỉ đơn giản là .tar
lưu trữ nén với gzip
máy nén. gzip
là máy nén trực tuyến chỉ có thể làm việc với một tập tin. Nếu bạn muốn nhận bất kỳ phần nào của gzip
luồng, bạn phải giải nén toàn bộ và đây là điều thực sự giết chết nó .tar.gz
(và cho .tar.bz2
, .tar.xz
và các định dạng tương tự khác dựa trên .tar
).
.tar
định dạng thực sự rất, rất đơn giản. Nó chỉ đơn giản là luồng của các tiêu đề tệp hoặc thư mục 512 byte (tên, kích thước, v.v.), mỗi tiêu đề được theo sau bởi nội dung tệp hoặc thư mục (được đệm vào kích thước khối 512 với 0 byte nếu cần). Khi bạn quan sát khối 512 hoàn toàn null cho một tiêu đề, điều này có nghĩa là kết thúc .tar
lưu trữ.
Một số người nghĩ rằng ngay cả .tar
các thành viên lưu trữ không thể được truy cập nhanh chóng, nhưng điều này không hoàn toàn đúng. Nếu .tar
kho lưu trữ chứa một vài tệp lớn, bạn thực sự có thể nhanh chóng tìm kiếm tiêu đề tiếp theo và do đó bạn có thể tìm thấy thành viên lưu trữ cần thiết trong vài lần tìm kiếm (nhưng vẫn có thể yêu cầu nhiều tìm kiếm như có thành viên lưu trữ). Nếu .tar
kho lưu trữ của bạn chứa rất nhiều tệp nhỏ, điều này có nghĩa là việc truy xuất thành viên nhanh chóng trở nên không thể thực hiện được ngay cả đối với việc không nén .tar
.