ตัวเลือกการบีบอัดไฟล์ Linux และการเปรียบเทียบ

Linux File Compression Options



โดยทั่วไปการบีบอัดเป็นวิธีที่มีประโยชน์ในการเข้ารหัสข้อมูลโดยพื้นฐานโดยใช้ข้อมูลน้อยกว่าวิธีดั้งเดิม ในกรณีของ Linux มีตัวเลือกการบีบอัดที่หลากหลาย ซึ่งแต่ละแบบก็มีประโยชน์แตกต่างกันไป

Linux distro ทั่วไปให้การเข้าถึงกลไกการบีบอัดที่เรียบง่ายและมีประโยชน์มากมาย บทความนี้จะเน้นเฉพาะพวกเขาเท่านั้น







ประเภทการบีบอัด

การบีบอัดกำลังเข้ารหัสและแสดงข้อมูลโดยใช้บิตน้อยกว่าเดิม ในกรณีของการบีบอัดไฟล์ วิธีการบีบอัดจะใช้อัลกอริธึมและการคำนวณทางคณิตศาสตร์ของตัวเองเพื่อสร้างผลลัพธ์ที่โดยทั่วไปจะน้อยกว่าขนาดของไฟล์ต้นฉบับ เนื่องจากวิธีการบีบอัดที่แตกต่างกันและลักษณะสุ่มของไฟล์ ระยะจึงอาจแตกต่างกันมาก



การบีบอัดมี 2 แบบ



  • การบีบอัดแบบสูญเสีย : นี่เป็นประเภทการบีบอัดที่มีความเสี่ยงซึ่งไม่รับประกันความสมบูรณ์ของข้อมูล โดยพื้นฐานแล้ว เมื่อบีบอัดแล้ว มีความเสี่ยงที่ไฟล์ต้นฉบับจะไม่สามารถสร้างใหม่ได้โดยใช้ไฟล์บีบอัด
    ตัวอย่างที่ชัดเจนของการบีบอัดประเภทนี้คือรูปแบบ MP3 ที่รู้จักกันดี เมื่อมีการสร้าง MP3 จากไฟล์เสียงต้นฉบับ ไฟล์นั้นจะเล็กกว่าไฟล์เพลงต้นฉบับอย่างมาก ทำให้สูญเสียคุณภาพเสียงบางส่วน
  • การบีบอัดแบบไม่สูญเสียข้อมูล : เป็นการบีบอัดแบบที่นิยมใช้กันมากที่สุด โดยใช้วิธีการบีบอัดแบบไม่สูญเสียข้อมูล ไฟล์ต้นฉบับสามารถสร้างใหม่ได้จากไฟล์บีบอัด วิธีการบีบอัดที่ฉันจะพูดถึงในบทความนี้เป็นวิธีการบีบอัดแบบไม่สูญเสียข้อมูลทั้งหมด

การบีบอัดลินุกซ์

วิธีการบีบอัดส่วนใหญ่มีอยู่ในเครื่องมือ ทาร์ . สำหรับการบีบอัดไฟล์ zip เราจะใช้ zip เครื่องมือ. สมมติว่าระบบของคุณมีเครื่องมือเหล่านี้ติดตั้งอยู่แล้ว มาเริ่มกันเลย





ขั้นแรกเราต้องการไฟล์ทดสอบ เรียกใช้คำสั่งต่อไปนี้เพื่อสร้าง

$ฐาน64/dev/urandom| ศีรษะ -ค 20000000 >file.txt



มันจะสร้างไฟล์ข้อความที่มีขนาด 20MB

ตอนนี้ มาสร้างสำเนาไฟล์ 10 ชุดกัน รวมแล้วเป็น 200 MB

ซิปสำหรับบีบอัด

Zip เป็นเรื่องปกติธรรมดา สำหรับการสร้างไฟล์ zip เครื่องมือ zip ต้องใช้โครงสร้างคำสั่งต่อไปนี้

$zip <ผลผลิต>.zip<ป้อนข้อมูล>

ในการบีบอัดไฟล์ทั้งหมดภายใต้ไดเร็กทอรีทดสอบในไฟล์ zip ไฟล์เดียว ให้รันคำสั่งนี้

$ziptest.zip*

ขนาดอินพุตคือ 200 MB หลังจากบีบอัดแล้ว ตอนนี้ 152 MB!

โดยค่าเริ่มต้น เครื่องมือ zip จะใช้การบีบอัด DEFLATE อย่างไรก็ตาม มันยังสามารถใช้การบีบอัด bzip2 ได้อีกด้วย ไม่เพียงเท่านั้น คุณยังสามารถสร้างไฟล์ zip ที่ป้องกันด้วยรหัสผ่านได้อีกด้วย! เรียนรู้เพิ่มเติมเกี่ยวกับ zip .

Tar สำหรับการบีบอัดบน Linux

Tar ไม่ใช่วิธีบีบอัด แต่มักใช้เพื่อสร้างที่เก็บถาวร อย่างไรก็ตาม มันสามารถใช้วิธีบีบอัดข้อมูลยอดนิยมได้หลายวิธีในไฟล์เก็บถาวร

สำหรับการจัดการไฟล์ tar (หรือที่เรียกว่า tarball) มีเครื่องมือ tar เรียนรู้เพิ่มเติมเกี่ยวกับ tar โดยทั่วไป เครื่องมือ tar ใช้โครงสร้างคำสั่งต่อไปนี้

$ทาร์ <ตัวเลือก> <output_file> <ป้อนข้อมูล>

ในการเพิ่มไฟล์ทดสอบลงในไฟล์ tar ไฟล์เดียว ให้รันคำสั่งต่อไปนี้

$ทาร์ -cvftest.tar*

ที่นี่ขนาดไฟล์ยังคงเท่าเดิม

Gzip สำหรับการบีบอัดบน Linux

GNU Zip หรือ gzip เป็นอีกวิธีหนึ่งในการบีบอัดข้อมูลยอดนิยม ซึ่งในความคิดของฉัน ดีกว่า zip แบบเดิม เนื่องจากมีการบีบอัดที่ดีกว่า เป็นผลิตภัณฑ์โอเพ่นซอร์สที่สร้างขึ้นโดย Mark Adler และ Jean-Loup Gailly ซึ่งเดิมถูกกำหนดให้มาแทนที่ UNIX ประคบ คุณประโยชน์.

สำหรับการจัดการไฟล์เก็บถาวร gzip มี 2 เครื่องมือให้เลือก: tar และ gzip ลองดูทั้งสองอย่าง

ขั้นแรกให้ใช้เครื่องมือ gzip นี่คือลักษณะโครงสร้างคำสั่ง gzip

$gzip <ตัวเลือก> <ป้อนข้อมูล>

ตัวอย่างเช่น คำสั่งต่อไปนี้จะแทนที่ test1.txt ด้วยไฟล์บีบอัด test1.txt.gz

$gzip -vtest1.txt

หากคุณต้องการบีบอัดไดเร็กทอรีทั้งหมดโดยใช้ gzip ให้รันคำสั่งนี้ ที่นี่ แฟล็ก -r ใช้สำหรับการบีบอัดแบบเรียกซ้ำ Gzip จะผ่านโฟลเดอร์ทั้งหมดและบีบอัดไฟล์แต่ละไฟล์ในแต่ละโฟลเดอร์

$gzip -NS <folder_path>

Gzip รองรับค่ากำลังอัดที่หลากหลาย เริ่มตั้งแต่ 1 (บีบอัดน้อยที่สุด เร็วที่สุด) ถึง 9 (บีบอัดดีที่สุด ช้าที่สุด)

$gzip -v -9 <ไฟล์>

เพื่อการควบคุมผลผลิตและความสะดวกในการใช้งานได้ดียิ่งขึ้น tar จะดีกว่าสำหรับงาน เรียกใช้คำสั่งต่อไปนี้

$ทาร์ -cvzftest.tar.gz*

ผลลัพธ์จะคล้ายกับ zip โดยใช้ DEFLATE ซึ่งส่งผลให้มีการบีบอัด 152 MB

Bzip2 สำหรับการบีบอัดบน Linux

Bzip2 เป็นเครื่องมือโอเพ่นซอร์สฟรีที่ใช้อัลกอริทึม Burrows-Wheeler สำหรับการบีบอัด เปิดตัวครั้งแรกในปี 1996 bzip2 ใช้แทนการบีบอัด gzip อย่างหนัก

เช่นเดียวกับ gzip มีเครื่องมือ 2 อย่างสำหรับใช้งานกับ bzip2: tar และ bzip2

เครื่องมือ bzip2 ทำงานคล้ายกับเครื่องมือ gzip สามารถทำงานได้ครั้งละไฟล์เดียวเท่านั้น นี่คือโครงสร้างคำสั่ง

$bzip2 <ตัวเลือก> <ป้อนข้อมูล>

มาบีบอัดไฟล์ test1.txt กันเถอะ ในที่นี้ แฟล็ก -v ใช้สำหรับโหมด verbose

$bzip2 -vtest1.txt

คล้ายกับ gzip bzip2 ยังรองรับการบีบอัดในระดับต่างๆ โดยเริ่มจาก 1 (ค่าเริ่มต้น ใช้หน่วยความจำน้อยกว่า) ถึง 9 (บีบอัดมาก ใช้หน่วยความจำสูง)

$bzip2 -v -9 <ไฟล์>

วิธีที่ดีกว่าในการใช้การบีบอัด bzip2 คือการใช้ tar ใช้คำสั่งต่อไปนี้

$ทาร์ -cvjftest.tar.bz2*

การบีบอัดได้รับการปรับปรุงให้ดีขึ้นกว่าครั้งก่อนเล็กน้อย ตอนนี้ขนาดไฟล์ลดลงเหลือ 151.7 MB

XZ สำหรับการบีบอัดบน Linux

เป็นผู้มาใหม่ในด้านการบีบอัด เปิดตัวครั้งแรกในปี 2552 มีการใช้งานเพิ่มขึ้นอย่างต่อเนื่องตั้งแต่นั้นมา

เครื่องมือบีบอัด xz ใช้อัลกอริธึม LZMA2 ที่มีอัตราส่วนการบีบอัดที่สูงกว่าเมื่อเทียบกับ gzip และ bzip2 ทำให้เป็นตัวเลือกที่ดีเมื่อคุณต้องการประหยัดพื้นที่ดิสก์สูงสุด อย่างไรก็ตาม สิ่งนี้มาพร้อมกับต้นทุนของความต้องการหน่วยความจำที่สูงขึ้นและการสิ้นเปลืองเวลา

ไฟล์ที่สร้างโดยเครื่องมือบีบอัด XZ มีนามสกุล .xz สำหรับการบีบอัดไฟล์เดียว คุณสามารถเรียกเครื่องมือ XZ ได้โดยตรง

$xz<ตัวเลือก> <ไฟล์>

ตัวอย่างเช่น เรียกใช้คำสั่งต่อไปนี้เพื่อบีบอัดไฟล์ test1.txt

$xz-vtest1.txt

เช่นเดียวกับวิธีการบีบอัดอื่นๆ ที่กล่าวถึง xz ยังรองรับแรงอัดที่หลากหลายตั้งแต่ 1 (การบีบอัดต่ำสุด เร็วที่สุด) ถึง 9 (การบีบอัดที่ดีที่สุด ช้าที่สุด) หากคุณไม่สนใจเรื่องเวลาและต้องการประหยัดพื้นที่

$xz-v -9 <ไฟล์>

ในการสร้างไฟล์ XZ ที่บีบอัดจากไฟล์ทดสอบทั้งหมด ให้รันคำสั่งนี้

$ทาร์ -cvJftest.tar.xz*

ที่นี่ขนาดไฟล์ที่ส่งออกคือ 153.7 MB

การแยกไฟล์บีบอัด

การแยกไฟล์เก็บถาวรที่เราสร้างขึ้นนั้นง่ายกว่าการสร้าง ในการแตกไฟล์ zip ให้ใช้โครงสร้างคำสั่งต่อไปนี้

$เปิดเครื่องรูด <ชื่อไฟล์>.zip-NS <ปลายทาง>

ในการแตกไฟล์ zip ที่เราสร้างขึ้น ให้รันคำสั่งนี้ สิ่งนี้จะแยกเนื้อหาทั้งหมดในไดเรกทอรีเดียวกัน

$เปิดเครื่องรูดtest.zip

สำหรับการแยกไฟล์เก็บถาวร tar, tar.gz, tar.bz2 และ tar.xz เราต้องใช้ ทาร์ เครื่องมือ. คำสั่ง tar ต่อไปนี้ใช้สำหรับการแตกไฟล์ทั้งหมด

$ทาร์ -xvf <archive_filename>

ตัวอย่างเช่น แยกไฟล์ทั้งหมดออกจากไฟล์บีบอัด bz2

$ทาร์ -xvftest.tar.bz2

หากต้องการขยายไฟล์ gzip (ไม่ใช่ tar.gz) ให้เรียกใช้คำสั่งนี้

$gzip -NS <gzip_file>

ในทำนองเดียวกัน คำสั่งต่อไปนี้จะคลายการบีบอัด bzip2 archive

$bzip2 -NS <bzip2_file>

โครงสร้างคำสั่งเดียวกันกับไฟล์เก็บถาวร xz

$xz-NS <xz_file>

ความคิดสุดท้าย

หวังว่าตอนนี้คุณมีความรู้เพียงพอที่จะจัดการกับงานบีบอัดในสถานการณ์ต่างๆ วิธีการบีบอัดทั้งหมดมีคุณสมบัติที่น่าสนใจมากทั้งนี้ขึ้นอยู่กับข้อกำหนดเฉพาะ

สิ่งสำคัญประการหนึ่งที่ควรทราบคือ ผลการบีบอัดจะไม่เหมือนเดิมตลอดเวลา เมื่อป้อนข้อมูลต่างกัน ผลลัพธ์จะแตกต่างกัน ตัวอย่างเช่น ในบางกรณี xz สามารถให้ผลลัพธ์การบีบอัดที่เกินจริงได้ ในขณะที่ในตัวอย่างนี้ ไม่มี วิธีอื่นก็เหมือนกัน

หากต้องการเรียนรู้เชิงลึกเพิ่มเติมเกี่ยวกับเครื่องมือเหล่านี้ โปรดดูหน้าคู่มือที่เกี่ยวข้อง

$ชาย zip