Tệp nén TAR (.tar)
POSIX.1-1988 Tiêu chuẩnTape Archive (TAR) là định dạng đóng gói tệp phổ biến trên Unix và Linux, nhóm nhiều tệp, thư mục và siêu dữ liệu hệ thống tệp thành một luồng chưa nén duy nhất, được thiết kế để sao lưu trên băng từ và phân phối phần mềm.
Chuyển đổi ZIP sang TAR
Trình chuyển đổi từ ZIP sang TAR miễn phí trên trình duyệt. Chuyển đổi tệp ngay lập tức trên thiết bị của bạn.
Kiểm tra & Siêu dữ liệu
Các hệ điều hành và trình phân tích tệp nhận dạng tệp TAR bằng cách kiểm tra chuỗi byte nhị phân đầu tệp:
Chữ ký ở đầu tệp (mẫu byte nhận diện)
Các hệ điều hành và trình phân tích tệp nhận dạng tệp TAR bằng cách kiểm tra chuỗi byte nhị phân đầu tệp:
CHỮ KÝ HEX (OFFSET 257):
75 73 74 61 72BIỂU DIỄN ASCII: ustar
Tiêu chuẩn hóa: POSIX.1-1988 (ustar) / POSIX.1-2001 (pax)
Thông số kỹ thuật
| Kiến trúc Container | Chuỗi các khối 512 byte: tiêu đề tệp 512 byte, tiếp theo là dữ liệu tệp được đệm đến bội số 512 byte, kết thúc bằng hai khối số 0 |
| Nén | Vùng chứa kho lưu trữ không nén (thiết kế để truyền vào gzip, bzip2, xz hoặc zstd) |
| Thứ tự byte | Trường văn bản ASCII hệ bát phân; phần mở rộng số big-endian |
| Không gian màu | Không áp dụng (vùng chứa kho lưu trữ) |
| Kênh & Cấu trúc | Cây thư mục tệp Unix, liên kết tượng trưng, liên kết cứng, thiết bị ký tự/khối và pipe FIFO |
| Kích thước tối đa | Giới hạn 8 GB trong ustar cổ điển; thực tế không giới hạn trong PAX hiện đại |
| Độ trong suốt | Bảo toàn đầy đủ quyền tệp POSIX, UID/GID chủ sở hữu, thời điểm truy cập và thuộc tính mở rộng |
| Truyền phát & Tăng dần | Thiết kế tuần tự theo luồng: có thể ghi trực tiếp lên ổ băng từ vật lý |
Ma trận so sánh kỹ thuật: TAR so với các đối thủ
| Thuộc tính kỹ thuật | TAR (Hiện tại) | ZIP | 7Z | CPIO |
|---|---|---|---|---|
| Nén tích hợp | Không có (chỉ là vùng chứa đóng gói thuần túy) | Tích hợp nén Deflate | Tích hợp nén LZMA/LZMA2 | Không có (chỉ là vùng chứa đóng gói thuần túy) |
| Giữ nguyên quyền Unix | Các thuộc tính POSIX được chọn, liên kết tượng trưng, UID/GID | Hỗ trợ quyền Unix hạn chế | Bảo tồn quyền cơ bản | Các thuộc tính POSIX được chọn |
| Giải nén theo luồng | Hỗ trợ giải nén hoàn toàn theo luồng từ đường ống | Yêu cầu đọc thư mục trung tâm tại EOF | Yêu cầu đọc tiêu đề kết thúc | Hỗ trợ giải nén hoàn toàn theo luồng |
| Truy cập ngẫu nhiên vào các tệp | Chậm (quét tuần tự tuyến tính) | Tức thì (tra cứu thư mục trung tâm) | Trung bình (tra cứu chỉ mục) | Chậm (quét tuần tự tuyến tính) |
Các dạng hỏng thường gặp và hướng dẫn khôi phục bằng mã hex
Lỗi giải nén: 'tar: Skipping to next header' hoặc 'A lone zero block at X'.
Nguyên nhân gốc rễ: Căn chỉnh khối 512 byte bị hỏng hoặc luồng bị chấm dứt sớm.
Khắc phục: Giải nén bằng 'tar -i' để bỏ qua các khối bị hỏng hoặc sửa chữa bằng Công cụ Tar File2File.app.
Phân tích bảo mật và các đường tấn công nhằm vào bộ phân tích cú pháp
Trình trích xuất TAR phải làm sạch đường dẫn tệp để ngăn chặn việc ghi đè tệp tùy ý thông qua các cuộc tấn công duyệt thư mục.
Các véc-tơ tấn công đã biết
- Duyệt thư mục kiểu 'Slip' (ví dụ: '../etc/passwd') ghi đè lên các tệp hệ thống quan trọng trong quá trình giải nén.
- Điều kiện tranh chấp trong quá trình tạo liên kết mềm đến các thư mục hệ thống, sau đó ghi tệp.
- Từ chối dịch vụ thông qua các vòng lặp liên kết cứng.
Biện pháp phòng thủ tốt nhất: Làm sạch nghiêm ngặt đường dẫn tệp lưu trữ và từ chối mọi mục nhập chứa tham chiếu đến thư mục cha ('..').
Nguồn gốc lịch sử và các cột mốc
Ưu điểm & Lợi ích chính
- TAR có thể ghi quyền Unix, liên kết tượng trưng và mã chủ sở hữu. Hãy kiểm tra xem công cụ giải nén có khôi phục các trường này không, nhất là khi giải nén trên Windows hoặc hệ thống có quy tắc quyền khác.
- Thiết kế hướng băng từ cho phép xử lý theo luồng: có thể giải nén trực tiếp từ luồng mạng mà không cần tìm đến cuối tệp.
- Trình quản lý gói Linux và công cụ container thường phân phối tệp trong kho lưu trữ TAR, thường được nén thành .tar.gz hoặc .tar.zst.
Hạn chế & Nhược điểm kỹ thuật
- Không tích hợp tính năng nén: tệp .tar không nén có kích thước xấp xỉ tổng kích thước của các tệp thô kết hợp lại.
- Truy cập ngẫu nhiên chậm: giải nén một tệp từ giữa một tệp tar lớn đòi hỏi phải quét từ đầu.
- Các tiêu đề ustar cũ cắt ngắn tên tệp dài hơn 100 ký tự (đã được giải quyết trong tar PAX/GNU hiện đại).
Thông tin kỹ thuật thú vị
- Chuỗi byte đặc biệt 'ustar' nằm ở vị trí byte 257 bên trong mỗi khối tiêu đề 512 byte.
- TAR ban đầu được viết để điều khiển vật lý các ổ băng từ cuộn 9 rãnh.
- Hình ảnh container Docker và OCI thực chất là các lớp gồm những kho lưu trữ .tar tiêu chuẩn chứa các phần thay đổi của hệ thống tệp gốc.
Các câu hỏi kỹ thuật thường gặp
Tại sao tệp .tar của tôi không được nén?
TAR chỉ là một công cụ lưu trữ (nó gộp các tệp lại thành một tệp duy nhất) và bản thân nó không thực hiện nén dữ liệu. Để nén lại, hãy kết hợp nó với gzip để tạo ra tệp .tar.gz.
Sự khác biệt giữa ustar và GNU tar là gì?
Ustar là tiêu chuẩn POSIX năm 1988 với giới hạn tên tệp 100 ký tự, trong khi GNU tar là định dạng mở rộng hỗ trợ độ dài đường dẫn không giới hạn và các tệp thưa (sparse files).
Làm cách nào để mở tệp .tar trên Windows?
Windows 10 và 11 hỗ trợ tar nguyên bản thông qua dòng lệnh ('tar -xf file.tar'), hoặc bạn có thể giải nén trực quan bằng File2File.app trực tiếp trên trình duyệt web.
Các cặp chuyển đổi TAR liên quan
Chuyển tệp lưu trữ ZIP sang TAR, đổi vùng chứa tệp nén thành kho lưu trữ TAR chưa nén phù hợp với môi trường Unix.
Việc chuyển đổi tệp lưu trữ TAR sang ZIP biến một định dạng lưu trữ Unix chưa nén thành định dạng tệp nén được hỗ trợ rộng rãi.
Việc chuyển đổi tệp lưu trữ TAR thành tệp lưu trữ GZIP đóng gói một tập hợp tệp chưa nén thành một luồng nén duy nhất bằng thuật toán DEFLATE không mất dữ liệu, nhằm giảm đáng kể kích thước tệp.
Trích xuất dữ liệu TAR từ kho lưu trữ TAR được nén bằng GZIP, chẳng hạn .tar.gz hoặc .tgz.