Các tập tin tar.gz không có chỉ mục. Không giống như zip hoặc các định dạng lưu trữ khác, nó không tầm thường cũng không rẻ để có được danh sách các tệp chứa hoặc siêu dữ liệu khác. Để hiển thị cho bạn tệp nào được chứa trong kho lưu trữ, tar thực sự cần giải nén tệp lưu trữ và giải nén tệp, mặc dù trong trường hợp -t
tùy chọn, nó chỉ làm như vậy trong bộ nhớ.
Nếu một mẫu phổ biến trong trường hợp sử dụng của bạn là liệt kê các tệp được chứa trong kho lưu trữ, bạn có thể muốn xem xét sử dụng định dạng lưu trữ có thể thêm chỉ mục tệp vào tệp nén, ví dụ: zip.
Có lẽ bạn cũng muốn xem định dạng HDF5 cho các tình huống phức tạp hơn.
Đo
Tôi chỉ cần thực hiện một số phép đo để chứng minh câu trả lời của mình và tạo ra một số thư mục có nhiều tệp trong đó và đóng gói cả hai, tar czf files#.tgz files#
và zip -r files#.zip files#
.
Đối với các bài kiểm tra, tôi đã chạy lệnh giải nén hai lần mỗi lần và lấy kết quả của lần chạy thứ hai, để cố gắng tránh đo tốc độ đĩa.
Kiểm tra 1
Thư mục files1
chứa 100.000 tệp trống .
$ time tar tzf files1.tgz >/dev/null
tar tzf files1.tgz > /dev/null 0,56s user 0,09s system 184% cpu 0,351 total
$ time unzip -l files1.zip >/dev/null
unzip -l files1.zip > /dev/null 0,30s user 0,34s system 99% cpu 0,649 total
zip ở đây chậm hơn.
Kiểm tra 2
Thư mục files2
chứa 5.000 tệp với 512 byte dữ liệu ngẫu nhiên mỗi tệp .
$ time tar tzf files2.tgz >/dev/null
tar tzf files2.tgz > /dev/null 0,14s user 0,03s system 129% cpu 0,131 total
$ time unzip -l files2.zip >/dev/null
unzip -l files2.zip > /dev/null 0,03s user 0,06s system 98% cpu 0,092 total
Vẫn không thuyết phục, nhưng lần này zip nhanh hơn.
Bài kiểm tra 3
Thư mục files3
chứa 5.000 tệp với 5kB dữ liệu ngẫu nhiên mỗi tệp .
$ time tar tzf files3.tgz >/dev/null
tar tzf files3.tgz > /dev/null 0,42s user 0,03s system 111% cpu 0,402 total
$ time unzip -l files3.zip >/dev/null
unzip -l files3.zip > /dev/null 0,03s user 0,06s system 99% cpu 0,093 total
Trong thử nghiệm này có thể thấy rằng các tệp càng lớn thì càng khó để tar liệt kê chúng.
Phần kết luận
Đối với tôi, có vẻ như zip giới thiệu một chút chi phí mà bạn sẽ chỉ chú ý với nhiều tệp rất nhỏ (gần như trống), trong khi đối với số lượng lớn tệp lớn hơn, nó sẽ thắng cuộc thi khi liệt kê các tệp có trong kho lưu trữ.
-z
tùy chọn :tar -tvfz
. Tương tự: Điều gì xảy ra nếu bạn sử dụng lệnh tar tvf trái ngược với tar tvfz?