Tệp nén TAR (.tar)

POSIX.1-1988 Tiêu chuẩn

Tape 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ọn hoặc thả tệp vào đây

Riêng tư - tệp không bao giờ rời khỏi thiết bị của bạn

Hoặc dán Ctrl+V
Cam kết bảo vệ quyền riêng tư, không truyền dữ liệu qua mạng: 0 byte được tải lên máy chủ bên ngoài. Toàn bộ quá trình xử lý diễn ra cục bộ trong hộp cát trình duyệt của bạn.

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 72

BIỂ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 ContainerChuỗ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énVù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ự byteTrường văn bản ASCII hệ bát phân; phần mở rộng số big-endian
Không gian màuKhông áp dụng (vùng chứa kho lưu trữ)
Kênh & Cấu trúcCâ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 đaGiớ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ốtBả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ầnThiế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ậtTAR (Hiện tại)ZIP7ZCPIO
Nén tích hợpKhông có (chỉ là vùng chứa đóng gói thuần túy)Tích hợp nén DeflateTích hợp nén LZMA/LZMA2Không có (chỉ là vùng chứa đóng gói thuần túy)
Giữ nguyên quyền UnixCác thuộc tính POSIX được chọn, liên kết tượng trưng, UID/GIDHỗ trợ quyền Unix hạn chếBảo tồn quyền cơ bảnCác thuộc tính POSIX được chọn
Giải nén theo luồngHỗ trợ giải nén hoàn toàn theo luồng từ đường ốngYêu cầu đọc thư mục trung tâm tại EOFYêu cầu đọc tiêu đề kết thúcHỗ trợ giải nén hoàn toàn theo luồng
Truy cập ngẫu nhiên vào các tệpChậ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

2001IEEE POSIX.1-2001 giới thiệu tiêu chuẩn PAX (Portable Archive Interchange), phá vỡ giới hạn kích thước 8 GB cũ.
1988IEEE POSIX tiêu chuẩn hóa định dạng tiêu đề 'ustar' (Unix Standard Tar).
1979Được giới thiệu trong Version 7 Unix (V7) bởi Bell Labs để ghi các cây tệp vào ổ đĩa băng từ.

Ư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.