So sánh và tùy chọn nén tệp Linux

Linux File Compression Options



Nói chung, nén là một phương pháp hữu ích về cơ bản là mã hóa thông tin bằng cách sử dụng ít dữ liệu hơn so với phương pháp ban đầu. Trong trường hợp của Linux, có nhiều tùy chọn nén khác nhau, mỗi tùy chọn đều có những lợi ích riêng.

Một bản phân phối Linux chung cung cấp quyền truy cập vào một số cơ chế nén thực sự hữu ích và đơn giản. Bài viết này sẽ chỉ tập trung vào chúng.







Các loại nén

Nén là mã hóa và biểu diễn thông tin bằng cách sử dụng ít bit hơn ban đầu. Trong trường hợp nén tệp, phương pháp nén sử dụng thuật toán và phép tính toán học của riêng nó để tạo ra kết quả thường nhỏ hơn kích thước của tệp gốc. Do cách nén khác nhau hoạt động và tính chất ngẫu nhiên của các tệp, số dặm có thể khác nhau rất nhiều.



Có 2 kiểu nén.



  • Nén mất dữ liệu : Đây là kiểu nén rủi ro không đảm bảo tính toàn vẹn của dữ liệu. Về cơ bản, sau khi được nén, có nguy cơ không thể tạo lại tệp gốc bằng cách sử dụng kho lưu trữ đã nén.
    Một ví dụ rõ ràng về kiểu nén này là định dạng MP3 nổi tiếng. Khi một tệp MP3 được tạo từ tệp âm thanh gốc, tệp đó sẽ nhỏ hơn đáng kể so với tệp nhạc nguồn ban đầu. Điều này làm giảm một số chất lượng âm thanh.
  • Nén không mất dữ liệu : Đây là kiểu nén được sử dụng rộng rãi nhất. Sử dụng phương pháp nén không mất dữ liệu, tệp gốc có thể được tạo lại từ tệp nén. Các phương pháp nén mà tôi sẽ thảo luận trong bài viết này là tất cả các phương pháp nén không mất dữ liệu.

Nén Linux

Phần lớn các phương pháp nén có sẵn từ công cụ nhựa đường . Đối với nén zip, chúng tôi sẽ sử dụng zip dụng cụ. Giả sử rằng hệ thống của bạn đã được cài đặt các công cụ này, hãy bắt đầu.





Lúc đầu, chúng tôi cần một tệp thử nghiệm. Chạy lệnh sau để tạo một lệnh.

$base64/nhà phát triển/urandom| cái đầu -NS 20000000 >file.txt



Nó sẽ tạo một tệp văn bản có kích thước 20MB.

Bây giờ, hãy tạo 10 bản sao của tệp. Tổng cộng là 200 MB.

Zip để nén

Zip khá phổ biến. Để tạo tệp zip, công cụ zip yêu cầu cấu trúc lệnh sau.

$zip <đầu ra>.zip<đầu vào>

Để nén tất cả các tệp trong thư mục thử nghiệm trong một tệp zip, hãy chạy lệnh này.

$ziptest.zip*

Kích thước đầu vào là 200 MB. Sau khi nén, dung lượng bây giờ là 152 MB!

Theo mặc định, công cụ zip sẽ áp dụng nén DEFLATE. Tuy nhiên, nó cũng có khả năng sử dụng nén bzip2. Không chỉ vậy, bạn cũng có thể tạo các tệp zip được bảo vệ bằng mật khẩu! Tìm hiểu thêm về mã zip .

Tar cho nén trên Linux

Tar không phải là một phương pháp nén. Thay vào đó, nó thường được sử dụng nhất để tạo lưu trữ. Tuy nhiên, nó có thể thực hiện một số phương pháp nén phổ biến vào kho lưu trữ.

Để xử lý kho lưu trữ tar (còn được gọi là tarball), có công cụ tar. Tìm hiểu thêm về tar. Nói chung, công cụ tar sử dụng cấu trúc lệnh sau.

$nhựa đường <tùy chọn> <output_file> <đầu vào>

Để thêm các tệp thử nghiệm vào một kho lưu trữ tar, hãy chạy lệnh sau.

$nhựa đường -cvftest.tar*

Ở đây, kích thước tệp vẫn được giữ nguyên.

Gzip để nén trên Linux

GNU Zip hoặc gzip là một phương pháp nén phổ biến khác, theo tôi, tốt hơn zip truyền thống vì khả năng nén tốt hơn. Đây là sản phẩm mã nguồn mở do Mark Adler và Jean-Loup Gailly tạo ra, ban đầu được dự định thay thế UNIX nén tính thiết thực.

Để quản lý kho lưu trữ gzip, có 2 công cụ có sẵn: tar và gzip. Hãy kiểm tra cả hai.

Đầu tiên, công cụ gzip. Đây là cách cấu trúc lệnh gzip trông.

$gzip <Lựa chọn> <đầu vào>

Ví dụ: lệnh sau sẽ thay thế test1.txt bằng tệp nén test1.txt.gz.

$gzip -vtest1.txt

Nếu bạn muốn nén toàn bộ thư mục bằng gzip, hãy chạy lệnh này. Ở đây, cờ -r là để nén đệ quy. Gzip sẽ đi qua tất cả các thư mục và nén (các) tệp riêng lẻ trong mỗi thư mục đó.

$gzip -NS <folder_path>

Gzip hỗ trợ nhiều giá trị cường độ nén khác nhau, bắt đầu từ 1 (nén ít nhất, nhanh nhất) đến 9 (nén tốt nhất, chậm nhất).

$gzip -v -9 <tập tin>

Để kiểm soát tốt hơn đầu ra và dễ sử dụng, tar sẽ tốt hơn cho tác vụ. Chạy lệnh sau.

$nhựa đường -cvzftest.tar.gz*

Kết quả tương tự như zip sử dụng DEFLATE, dẫn đến 152 MB sau khi nén.

Bzip2 để nén trên Linux

Bzip2 là một công cụ mã nguồn mở và miễn phí sử dụng thuật toán Burrows-Wheeler để nén. Được giới thiệu lần đầu tiên vào năm 1996, bzip2 được sử dụng nhiều như một giải pháp thay thế cho nén gzip.

Giống như gzip, có 2 công cụ để làm việc với bzip2: tar và bzip2.

Công cụ bzip2 hoạt động tương tự như công cụ gzip. Nó chỉ có thể hoạt động với chỉ một tệp duy nhất tại một thời điểm. Đây là cấu trúc lệnh.

$bzip2 <Lựa chọn> <đầu vào>

Hãy nén tệp test1.txt. Ở đây, cờ -v dành cho chế độ tiết.

$bzip2 -vtest1.txt

Tương tự như gzip, bzip2 cũng hỗ trợ các mức độ nén khác nhau, bắt đầu từ 1 (mặc định, sử dụng ít bộ nhớ hơn) đến 9 (nén cực cao, sử dụng bộ nhớ cao).

$bzip2 -v -9 <tập tin>

Cách tốt hơn để sử dụng nén bzip2 là sử dụng tar. Sử dụng lệnh sau.

$nhựa đường -cvjftest.tar.bz2*

Nén được cải thiện một chút so với những cái trước. Bây giờ, kích thước tệp đã bị thu hẹp xuống còn 151,7 MB.

XZ để nén trên Linux

Nó là một người mới tương đối trong lĩnh vực nén. Được phát hành lần đầu tiên vào năm 2009, nó đã chứng kiến ​​sự tăng trưởng ổn định về việc sử dụng kể từ đó.

Công cụ nén xz sử dụng thuật toán LZMA2 được biết đến với tỷ lệ nén lớn hơn so với gzip và bzip2, làm cho nó trở thành lựa chọn tuyệt vời khi bạn muốn tiết kiệm tối đa dung lượng ổ đĩa. Tuy nhiên, điều này đi kèm với chi phí yêu cầu bộ nhớ cao hơn và tiêu thụ thời gian.

Tệp được tạo bởi công cụ nén XZ có phần mở rộng là .xz. Để nén một tệp duy nhất, bạn có thể gọi trực tiếp công cụ XZ.

$xz<Lựa chọn> <tập tin>

Ví dụ: chạy lệnh sau để nén tệp test1.txt.

$xz-vtest1.txt

Tương tự như các phương pháp nén khác đã đề cập, xz cũng hỗ trợ nhiều mức độ nén khác nhau, bắt đầu từ 1 (nén thấp nhất, nhanh nhất) đến 9 (nén tốt nhất, chậm nhất). Nếu bạn không quan tâm đến thời gian và chỉ muốn tiết kiệm dung lượng, thì hãy làm hết sức mình.

$xz-v -9 <tập tin>

Để tạo tệp XZ nén từ tất cả các tệp thử nghiệm, hãy chạy lệnh này.

$nhựa đường -cvJftest.tar.xz*

Ở đây, kích thước tệp đầu ra là 153,7 MB.

Giải nén kho lưu trữ nén

Giải nén các kho lưu trữ chúng tôi đã tạo dễ dàng hơn so với việc tạo chúng. Để giải nén tệp zip, hãy sử dụng cấu trúc lệnh sau.

$giải nén <tên tập tin>.zip-NS <điểm đến>

Để giải nén kho lưu trữ zip mà chúng tôi đã tạo, hãy chạy lệnh này. Thao tác này sẽ trích xuất tất cả nội dung trong cùng một thư mục.

$giải néntest.zip

Để giải nén các kho lưu trữ tar, tar.gz, tar.bz2 và tar.xz, chúng ta phải sử dụng nhựa đường dụng cụ. Lệnh tar sau đây có thể áp dụng để giải nén tất cả chúng.

$nhựa đường -xvf <archive_filename>

Ví dụ: hãy giải nén tất cả các tệp từ kho lưu trữ nén bz2.

$nhựa đường -xvftest.tar.bz2

Để giải nén tệp gzip (không phải tar.gz), hãy chạy lệnh này.

$gzip -NS <gzip_file>

Tương tự, lệnh sau sẽ giải nén kho lưu trữ bzip2.

$bzip2 -NS <bzip2_file>

Cấu trúc lệnh tương tự áp dụng cho kho lưu trữ xz.

$xz-NS <xz_file>

Suy nghĩ cuối cùng

Hy vọng rằng bây giờ bạn đã có đủ kiến ​​thức để xử lý các tác vụ nén trong các trường hợp khác nhau. Tùy thuộc vào yêu cầu cụ thể, tất cả các phương pháp nén cung cấp các tính năng rất hấp dẫn.

Một điều quan trọng cần lưu ý là, kết quả nén không phải lúc nào cũng giống nhau. Với dữ liệu đầu vào khác nhau, đầu ra sẽ khác nhau. Ví dụ: trong một số trường hợp, xz có thể cung cấp kết quả nén điên rồ trong khi trong ví dụ này thì không. Tương tự với các phương pháp khác.

Để tìm hiểu sâu hơn về các công cụ này, hãy xem trang người dùng tương ứng của chúng.

$Đàn ông zip