Định dạng lưu trữ TAR

Định dạng lưu trữ tar cung cấp một cách đáng tin cậy để lưu trữ tệp. Nó bảo tồn dữ liệu gốc theo từng byte, thêm tiêu đề 512 byte ở đầu. Kích thước tệp cũng được điều chỉnh để vừa khít với các khối 512 byte. Điều thú vị là tiêu đề bao gồm tổng kiểm tra tích hợp để phát hiện lỗi. Mặc dù tiện ích tar tiêu chuẩn có thể bỏ qua các tiêu đề bị hỏng (và do đó là các tệp được liên kết), nhưng nó sẽ tiếp tục xử lý phần còn lại của kho lưu trữ, đảm bảo bạn vẫn có thể truy cập các tệp không bị hư hại.

Giới thiệu về thông tin lưu trữ TAR

Định dạng tệp tar, viết tắt của “lưu trữ băng”, được tạo bởi tiện ích tar trong hệ thống UNIX. Nó phục vụ như một kho lưu trữ để gộp các tệp lại với nhau cho các tác vụ như sao lưu hoặc phân phối. Không giống như các định dạng lưu trữ nén, tệp tar lưu trữ nhiều tệp, còn được gọi là tarball, ở định dạng không nén cùng với siêu dữ liệu về kho lưu trữ. Mặc dù bản thân các tệp tar không được nén nhưng chúng có thể được nén bằng các tiện ích như gzip hoặc bzip2 để lưu trữ và truyền tải hiệu quả.
Do bản thân định dạng file tar không bao gồm tính năng nén tích hợp nên các kho lưu trữ tar thường được nén bằng các tiện ích bên ngoài như gzip, bzip2, Xperia (sử dụng thuật toán nén 7-Zip/p7zip LZMA/LZMA2), Brotli, Zstandard , và các công cụ tương tự. Việc nén này giúp giảm kích thước của kho lưu trữ để dễ dàng di chuyển hơn và sao lưu dữ liệu hiệu quả. Các tệp nén do quá trình này tạo ra có thể có các phần mở rộng đơn như tgz, tbz, txz, tzst hoặc các phần mở rộng kép như tar.gz, tar.br, tar.bz2, tar.xz, tar.zst.

Sự phát triển của định dạng lưu trữ TAR

Định dạng lưu trữ tar đã phát triển theo thời gian. Các tính năng mới được thêm vào tiện ích tar từ những năm 1980 đã dẫn đến các phần mở rộng định dạng bao gồm thông tin bổ sung để cải thiện chức năng. Các định dạng tar ban đầu thiếu tính nhất quán trong cách lưu trữ các trường số, nhưng điều này đã được giải quyết trong các phiên bản sau để nâng cao tính di động. Sự cải tiến này bắt đầu với tiêu chuẩn POSIX đầu tiên cho các định dạng tar vào năm 1988.
POSIX.1 2001 đã giới thiệu định dạng “mở rộng tar” (còn được gọi là tar.h hoặc pax). Định dạng này linh hoạt nhất, kết hợp các chức năng từ các thông số kỹ thuật tar khác. Nó cho phép các nhà cung cấp thêm các tính năng tùy chỉnh bằng cách sử dụng thẻ. Mặc dù tài liệu nhấn mạnh rằng không phải tất cả việc triển khai tar đều có thể xử lý định dạng này một cách hoàn hảo, nhưng thiết kế của nó đảm bảo rằng bất kỳ công cụ nào có khả năng đọc các kho lưu trữ “ustar” cũng có thể đọc hầu hết các kho lưu trữ “posix”. Ngoài ra, POSIX.1 2001 đã loại bỏ giới hạn kích thước tệp 8 GB trước đó đối với kho lưu trữ tar.

Cấu trúc TAR

Về cốt lõi, kho lưu trữ TAR là một chuỗi các khối dữ liệu. Mỗi khối có kích thước cố định 512 byte này được sắp xếp tuyến tính. Để đánh dấu sự kết thúc của kho lưu trữ, có hai khối liên tiếp chứa đầy số không.
Tuy nhiên, khi xem xét một cách logic, kho lưu trữ TAR là một chuỗi các mục nhập tệp. Mỗi mục được tạo thành từ nhiều khối, với khối đầu tiên luôn là tiêu đề mục. Các khối còn lại lưu trữ nội dung tập tin thực tế.
Bên trong Tiêu đề mục nhập
Tiêu đề mục nhập đóng vai trò như một bản thiết kế chi tiết cho từng tệp trong kho lưu trữ. Nó chứa các thông tin sau

  • File Name (100 byte): Tên file được lưu trong mục này.
  • File Permissions (8 byte): Quyền truy cập vào tệp, được biểu thị dưới dạng chuỗi bát phân.
  • ID chủ sở hữu (8 byte): ID người dùng bằng số của chủ sở hữu tệp (định dạng bát phân).
  • ID nhóm (8 byte): ID nhóm số của chủ sở hữu tệp (định dạng bát phân).
  • File Size (12 byte): Kích thước của file ở định dạng bát phân.
  • Last Modified Time (12 byte): Dấu thời gian bát phân của lần sửa đổi tệp cuối cùng.
  • Tổng kiểm tra (8 byte): Giá trị tổng kiểm tra dùng để xác minh tính toàn vẹn của dữ liệu tiêu đề.
  • File Type (1 byte): Cho biết loại file được lưu trữ (file thông thường, liên kết cứng hoặc liên kết tượng trưng).
  • Tên tệp được liên kết (độ dài thay đổi): Nếu mục nhập là một liên kết (cứng hoặc tượng trưng), trường này lưu tên của tệp được liên kết.

Lợi ích của định dạng này

  • Tính linh hoạt - TAR là một định dạng linh hoạt có khả năng lưu trữ nhiều tệp và thư mục trong một tệp lưu trữ duy nhất, giúp định dạng này phù hợp với nhiều nhu cầu sao lưu và phân phối khác nhau.
  • Bảo toàn thuộc tính tệp TAR bảo toàn các thuộc tính quan trọng của tệp như quyền, quyền sở hữu và dấu thời gian, đảm bảo rằng dữ liệu lưu trữ vẫn giữ được tính toàn vẹn và khả năng sử dụng.
  • Đơn giản - Cấu trúc của tệp TAR đơn giản và dễ hiểu, giúp chúng dễ dàng làm việc và xử lý. Điều này giúp đơn giản hóa việc lập trình và tự động hóa các tác vụ liên quan đến kho lưu trữ TAR.

Hoạt động được hỗ trợ lưu trữ TAR

Aspose.ZIP cho phép người dùng trích xuất mục nhập cụ thể hoặc toàn bộ kho lưu trữ. Đối với Aspose.ZIP cho .NET Bạn có thể sử dụng TarArchiveClass để mở tệp .tar.gz rồi duyệt qua các mục nhập của nó, trích xuất chúng đến vị trí mong muốn. Đối với Aspose.ZIP dành cho Java Cách tiếp cận tương tự bằng cách sử dụng TarArchive để mở tệp .tar.gz và trích xuất các mục nhập.

Tệp TAR - Cấu trúc bên trong

Tệp phân đoạn lưu trữ dữ liệu thô về một phân đoạn. Mặc dù tồn tại các loại phân đoạn khác nhau nhưng tệp TAR chỉ phân biệt giữa phân đoạn dữ liệu và phân đoạn lớn. Các phân đoạn hàng loạt được lưu trực tiếp “nguyên trạng” trong tệp TAR.
Tuy nhiên, các phân đoạn dữ liệu được kiểm tra để tìm tham chiếu đến các phân đoạn khác hoặc nội dung nhị phân thô. Các tham chiếu này được lưu trữ đơn giản dưới dạng danh sách số nhận dạng duy nhất (UUID) trong phân đoạn dữ liệu. Các phân đoạn được tham chiếu có thể được đặt trong tệp TAR hiện tại hoặc bên ngoài.
Tham chiếu nội bộ được tìm thấy bằng cách kiểm tra chỉ mục của tệp TAR. Tham chiếu bên ngoài yêu cầu công cụ bên ngoài để định vị phân đoạn trong tệp TAR khác. Danh sách các phân đoạn được tham chiếu trong phân đoạn dữ liệu được lưu trữ trong tệp biểu đồ để truy xuất nhanh hơn. Danh sách này được sắp xếp theo thứ tự để tối ưu hóa quá trình tìm kiếm.

Tệp TAR - Cấu trúc bên trong

Cấu trúc lưu trữ bên trong

  • Siêu dữ liệu tệp - Tương tự như kho lưu trữ tar, mỗi tệp lưu trữ thông tin cơ bản như thời gian sửa đổi và quyền. Tuy nhiên, phần này linh hoạt và cho phép bỏ qua hoặc bao gồm các chi tiết bổ sung như danh sách kiểm soát truy cập (ACL) hoặc thuộc tính mở rộng (EA) dựa trên nhu cầu của bạn. Bạn nên thêm hàm băm mạnh (như SHA1) cho các tệp thông thường để đảm bảo tính toàn vẹn của dữ liệu.
  • Nhiều luồng nội dung - Không giống như các kho lưu trữ truyền thống, các tệp có thể có nhiều luồng dữ liệu trong tệp dữ liệu bên trong. Điều này rất hữu ích để lưu trữ các thuộc tính mở rộng hoặc các nhánh tài nguyên được liên kết với tệp.
  • Tiêu đề - Tệp chỉ mục bên trong chứa các tiêu đề tệp, phản ánh những tiêu đề nằm rải rác trong tệp dữ liệu bên trong. Tuy nhiên, khi được lưu trữ riêng biệt, các tiêu đề chỉ mục phải tham chiếu đến vị trí bắt đầu của dữ liệu tương ứng trong tệp dữ liệu. Ngoài ra, các mục nhập thư mục trong chỉ mục liệt kê các tệp chứa của chúng và các phần bù tương ứng của chúng trong chỉ mục tệp bên trong.
  • Cơ sở lý luận cho siêu dữ liệu trùng lặp - Lựa chọn thiết kế này đảm bảo cả việc truyền/giải mã dữ liệu hiệu quả và truy cập tệp ngẫu nhiên. Ngoài ra, siêu dữ liệu nén tốt, dẫn đến chi phí lưu trữ ở mức tối thiểu. Các thử nghiệm cho thấy siêu dữ liệu thường chiếm ít hơn 0,3% dung lượng lưu trữ, khiến việc đánh đổi trở nên đáng giá.
  • Tiêu đề khối - Tiêu đề khối, tương tự như tệp bên ngoài, chứa thông tin kích thước khối và chuỗi nhận dạng duy nhất.

Ví dụ về việc sử dụng TAR

API Aspose.ZIP cho phép trích xuất các kho lưu trữ trong ứng dụng của bạn mà không cần bất kỳ ứng dụng bên thứ 3 nào khác. API Aspose.ZIP cung cấp lớp TarArchive để hoạt động với kho lưu trữ TAR.

Add entries to existing TAR archive via C#

All you need to do is open archive for extraction and add entry to archive .

    using (TarArchive archive = new TarArchive(existing.tar))
    {
        archive.CreateEntry("one_more.bin", data.bin);
        archive.Save(added.tar);
    }

Delete entries from existing TAR archive via .net

Entries of tar archive can be deleted with similar DeleteEntry methods.

using (var archive = new TarArchive("two_files.tar"))
{
    archive.DeleteEntry(0);
    archive.Save("single_file.tar");
}

Add files to TAR archive without compression

Tar is a file archival format used to group multiple files and directories into a single archive file without compression , unlike formats like ZIP, RAR and others. To create a tar archive without specifying any compression settings, simply use a TarArchive instance.

    using (FileStream tarFile = File.Open("joint.tar", FileMode.Create))
    {
        FileInfo fi1 = new FileInfo("text.txt");
        FileInfo fi2 = new FileInfo("picture.png");
        using (TarArchive archive = new TarArchive())
        {
            archive.CreateEntry("text.txt", fi1);
            archive.CreateEntry("picture.png", fi2);
            archive.Save(tarFile);
        }
    }

Aspose.Zip offers individual archive processing APIs for popular development environments, listed below:

Aspose.Zip for .NETAspose.Zip via JavaAspose.Zip via Python.NET

Thông tin bổ sung về kho lưu trữ TAR

Mọi người đã hỏi

1. Kho lưu trữ TAR là gì?

Kho lưu trữ TAR, viết tắt của Tape Archive, là định dạng tệp được sử dụng để gói nhiều tệp và thư mục vào một tệp lưu trữ duy nhất mà không cần nén. Nó thường được sử dụng cho mục đích sao lưu và phân phối trong các hệ thống dựa trên Unix.

2. Lợi ích của kho lưu trữ TAR là gì?

TAR tự hào về tính phổ quát vì nó tương thích với hầu hết các hệ điều hành và chương trình lưu trữ, tạo điều kiện chia sẻ và trao đổi dữ liệu liền mạch trên các nền tảng khác nhau. Tính đơn giản của nó nằm ở cấu trúc đơn giản của kho lưu trữ TAR, cho phép tạo, trích xuất và thao tác tệp dễ dàng. Hơn nữa, TAR mang lại hiệu quả bằng cách cho phép nén bằng các công cụ bên ngoài như gzip hoặc bzip2, cho phép người dùng giảm kích thước tệp và tiết kiệm không gian lưu trữ cũng như băng thông trong quá trình truyền dữ liệu.

3. Một số hạn chế của kho lưu trữ TAR là gì?

Mặc dù TAR là một định dạng tệp linh hoạt thường được sử dụng để lưu trữ và phân phối tệp trong các hệ thống dựa trên Unix nhưng nó cũng có một số hạn chế cần lưu ý. Thứ nhất, TAR thiếu khả năng nén tích hợp, nghĩa là bạn sẽ cần các công cụ bổ sung như gzip hoặc bzip2 để giảm kích thước tệp. Thứ hai, kho lưu trữ TAR không cung cấp các tính năng mã hóa gốc, vì vậy nếu yêu cầu bảo mật dữ liệu, bạn sẽ phải dựa vào các công cụ bên ngoài để bảo vệ bằng mật khẩu. Cuối cùng, TAR có hỗ trợ hạn chế trong việc bảo tồn các thuộc tính tệp như dấu thời gian và quyền từ tệp gốc, điều này có thể ảnh hưởng đến tính toàn vẹn của dữ liệu được lưu trữ.