หากเคยต้องบีบอัดข้อมูลปริมาณมากด้วย tar คุณจะรู้ว่ามันน่าเบื่อแค่ไหน มักช้ามาก จนคุณต้องกด Ctrl + C หยุดงานและทิ้งไป แต่มีเครื่องมืออื่นที่ tar ใช้ได้ และเป็นวิธีที่ดีในการใช้ CPU หลายเธรดในปัจจุบัน เพื่อเร่งการบีบอัด บทความนี้แสดงวิธีทำให้ tar ใช้ทุก core เมื่อบีบอัดอาร์คไฟว์ใน Linux
เข้าใจและติดตั้งเครื่องมือ
เครื่องมือหลัก 3 ตัวคือ pigz, pbzip2 และ pxz มีความแตกต่างเล็กน้อย แต่ความต่างอยู่ที่ gzip, bzip2 และ xz ตามลำดับ ระดับการบีบอัดเพิ่มขึ้น หมายความว่าอาร์คไฟว์ที่บีบอัดด้วย gzip จะใหญ่กว่า xz แต่ gzip ใช้เวลาน้อยกว่า xz โดย bzip2 อยู่กลาง
ตัว "p" นำหน้าชื่อเครื่องมือหมายถึง "parallel" (ขนาน) การประมวลผลแบบขนานกลายเป็นสิ่งสำคัญมากขึ้นเรื่อยๆ - ว่าสิ่งใดใช้ทุก CPU core ได้ดีแค่ไหน ด้วย CPU เช่น AMD Epyc และ Threadripper ที่มีถึง 64 cores และ 128 threads การเข้าใจว่าแอปพลิเคชันไหนใช้ได้สำคัญมาก ฟังก์ชันบีบอัดเหล่านี้เป็นผู้สมัครที่เหมาะสม
เพื่อติดตั้งเครื่องมือ ให้ใช้ repo ของคุณ:
sudo apt install pigz pbzip2 pxz # Debian/Ubuntu sudo dnf install pigz pbzip2 pxz # Fedora sudo pacman -Sy pigz pbzip2 pxz # Arch Linux
บทความนี้เน้น pxz เพื่อความสอดคล้อง สำหรับ pigz โปรดดูบทช่วยสอนนี้
การบีบอัดอาร์คไฟว์ด้วย Tar
ไวยากรณ์ของ tar ค่อนข้างง่าย เพื่อบีบอัดไดเรกทอรี ใช้คำสั่งแบบนี้:
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/
ตัวแรกใช้ gzip ตัวที่สองใช้ bzip2 ตัวที่สามใช้ xz ชื่อไฟล์และไดเรกทอรีจะแตกต่างกันไป ขึ้นอยู่กับที่คุณทำ ฉันดึง Linux Kernel จาก GitHub ไปที่ "/home" และจะใช้มัน ฉันจะรันคำสั่งด้วยคำสั่ง time นำหน้าเพื่อดูเวลา คุณยังเห็นว่า xz ใช้ CPU สูงสุด แต่เพียง pin หนึ่ง core ที่ 100%
และเห็นว่ามันใช้เวลานานมากสำหรับ i7-2600s เก่าของฉันในการบีบอัด Linux 5.10-rc3 (ประมาณ 28 นาที)
นี่คือที่ที่เครื่องมือบีบอัดแบบขนานช่วยได้ หากคุณบีบอัดไฟล์ใหญ่และต้องการให้เสร็จเร็วขึ้น ฉันแนะนำเครื่องมือเหล่านี้อย่างยิ่ง
การใช้เครื่องมือบีบอัดแบบขนานกับ Tar
คุณสามารถบอก tar ให้ใช้โปรแกรมบีบอัดด้วยตัวเลือก --use-compression-program หรือใช้แฟล็กคำสั่งที่ง่ายกว่า -I ตัวอย่างไวยากรณ์สำหรับเครื่องมือเหล่านี้:
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/
ลองทดสอบดูว่าระบบของฉันใช้เวลานานแค่ไหนในการบีบอัด Linux Kernel ด้วยการเข้าถึงทั้ง 8 เธรดของ CPU คุณเห็น htop แสดงทุกเธรด pinned ที่ 100% เพราะ pxz
เห็นได้ว่ามันใช้เวลาน้อยลงอย่างมาก (ประมาณ 7 นาที!) และนั่นคือขณะทำมัลติทาสกิ้ง ฉันมี VM รันในพื้นหลัง และกำลังเล่นเว็บ Hardware scheduler ของ Linux Kernel จะให้สิ่งที่คุณต้องการสำหรับงานส่วนตัว ดังนั้นหากคุณปล่อยคำสั่ง pxz รันโดยไม่มีสิ่งอื่นรันบนระบบ คุณอาจทำให้เสร็จเร็วกว่านี้
การปรับระดับการบีบอัดด้วย pigz, pbzip2, และ pxz
คุณยังสามารถส่งระดับการบีบอัดไปยัง pxz เพื่อทำให้ไฟล์เล็กลงอีก ต้องการ RAM, CPU และเวลาเพิ่ม แต่คุ้มค่าหากคุณต้องการไฟล์เล็กที่สุด นี่คือการเปรียบเทียบคำสั่งทั้งสองและผลลัพธ์ติดกัน
การบีบอัดไม่ได้มากกว่านี้มาก และเวลาอาจไม่คุ้มค่า แต่ถ้าทุกเมกะไบต์สำคัญ มันยังเป็นตัวเลือกที่ดี
หวังว่าคุณเพลิดเพลินกับคู่มือการใช้ทุก core บีบอัดอาร์คไฟว์ด้วย tar โปรดดูเนื้อหา Linux อื่นๆ เช่น วิธีสร้าง PC ใหม่สำหรับ Linux การเชี่ยวชาญ Apt และการติดตั้ง Arch Linux บน Raspberry Pi