Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

Cách nén kho lưu trữ sử dụng tất cả nhân CPU với Tar

Nếu bạn từng phải nén các kho lớn với tar, bạn sẽ biết nó đau khổ như thế nào. Thường rất chậm, và bạn thấy mình bấm Ctrl + C để dừng việc và quên đi. Tuy nhiên, có một số công cụ khác mà tar có thể dùng, và chúng là cách tuyệt vời để tận dụng CPU đa luồng hiện đại và tăng tốc归档 tar. Bài viết này chỉ cách làm cho tar dùng tất cả nhân khi nén kho lưu trữ trên Linux.

Hiểu và cài đặt công cụ

Ba công cụ chính ở đây là pigz, pbzip2 và pxz. Có một số khác biệt tinh tế giữa các công cụ, nhưng khác biệt thực sự nằm ở gzip, bzip2 và xz. Theo thứ tự đó, mức độ nén tăng dần, nghĩa là kho nén bằng gzip sẽ lớn hơn xz, nhưng gzip tự nhiên mất ít thời gian hơn xz. bzip2 ở giữa.

Chữ "p" bắt đầu tên mỗi công cụ có nghĩa là "parallel" (song song). Song song hóa trở nên quan trọng hơn qua các năm – khả năng tận dụng tất cả nhân CPU. Với CPU như AMD Epyc và Threadripper lên tới 64 nhân 128 luồng, quan trọng là hiểu ứng dụng nào tận dụng được điều đó. Các hàm nén này là ứng cử viên chính.

Để cài đặt công cụ, bạn chỉ cần dùng kho phần mềm.

sudo apt install pigz pbzip2 pxz # Debian/Ubuntu
sudo dnf install pigz pbzip2 pxz # Fedora
sudo pacman -Sy pigz pbzip2 pxz # Arch Linux

Bài viết tập trung vào pxz để nhất quán. Bạn có thể xem hướng dẫn cho pigz.

Nén kho lưu trữ với Tar

Cú pháp tar khá đơn giản. Chỉ để nén một thư mục, bạn có thể dùng lệnh như sau:

tar czf linux-5.10-rc3.tar.gz linux/
tar cjf linux-5.10-rc3.tar.bz2 linux/
tar cJf linux-5.10-rc3.tar.xz linux/

Cái đầu dùng gzip, cái hai dùng bzip2, cái ba dùng xz. Tên tệp và thư mục sẽ khác tùy việc bạn làm, nhưng tôi kéo Linux Kernel từ GitHub vào thư mục "/home" và sẽ dùng đó. Vậy tôi sẽ chạy lệnh đó với lệnh time ở đầu để xem mất bao lâu. Bạn cũng thấy xz được liệt kê chiếm phần trăm CPU cao nhất trên hệ thống này, nhưng nó chỉ ghim một nhân ở 100%.

Và như bạn thấy, nó mất rất nhiều thời gian cho i7-2600s cũ của tôi nén Linux 5.10-rc3 (khoảng 28 phút).

Đây là nơi các công cụ nén song song hữu ích. Nếu bạn nén tệp lớn và muốn xong nhanh hơn, tôi không thể khuyến nghị các công cụ này đủ.

Sử dụng công cụ nén song song với Tar

Bạn có thể bảo tar dùng chương trình nén với tùy chọn --use-compression-program, hoặc dùng cờ đơn giản hơn -I. Ví dụ cú pháp cho bất kỳ công cụ nào sẽ như sau:

tar -I pigz -cf linux-5.10-rc3.tar.gz linux/
tar -I pbzip2 -cf linux-5.10-rc3.tar.bz2 linux/
tar -I pxz -cf linux-5.10-rc3.tar.xz linux/

Hãy test xem hệ thống của tôi nén Linux Kernel mất bao lâu với quyền truy cập tất cả 8 luồng CPU. Bạn thấy đọc htop hiển thị tất cả luồng ghim ở 100% do pxz.

Bạn thấy nó mất ít thời gian đáng kể để nén kho đó (khoảng 7 phút!), và đó là khi đa nhiệm. Tôi có máy ảo chạy ngầm và đang lướt web. Bộ điều độ phần cứng Linux Kernel sẽ cho bạn thứ bạn cần cho việc cá nhân, nên nếu bạn để lệnh pxz chạy mà không có gì khác chạy trên hệ thống, bạn có thể xong nhanh hơn.

Điều chỉnh mức nén với pigz, pbzip2 và pxz

Bạn cũng có thể truyền mức nén cho pxz để làm tệp nhỏ hơn. Điều này cần thêm RAM, CPU và thời gian, nhưng đáng giá nếu bạn thực sự cần tệp nhỏ. Đây là so sánh hai lệnh và kết quả cạnh nhau.

Mức nén không lớn hơn nhiều, và thời gian không nhất thiết đáng giá, nhưng nếu mỗi megabyte đều đếm, đó vẫn là lựa chọn tuyệt vời.

Hy vọng bạn thích hướng dẫn dùng tất cả nhân để nén kho lưu trữ với tar. Hãy xem thêm nội dung Linux khác của chúng tôi, như cách xây dựng PC mới cho Linux, thành thạo Apt và trở thành chuyên gia Apt, và cách cài Arch Linux trên Raspberry Pi.