วิธี Zip และ Unzip ไฟล์ด้วย Gzip บน Linux

เผยแพร่แล้ว: 2022-06-28
เทอร์มินัล Linux บนพื้นหลังสีแดง
fatmawati achmad zaenuri/Shutterstock.com

มียูทิลิตี้บีบอัดไฟล์มากมาย แต่ยูทิลิตี้ที่คุณรับประกันว่าจะพบในทุกการกระจาย Linux คือ gzip หากคุณเรียนรู้การใช้เครื่องมือบีบอัดเพียงเครื่องมือเดียว เครื่องมือนั้นควรเป็น gzip

ที่เกี่ยวข้อง: การบีบอัดไฟล์ทำงานอย่างไร?

อัลกอริทึมและต้นไม้

เครื่องมือบีบอัดข้อมูล gzip ถูกเขียนขึ้นในช่วงต้นทศวรรษ 1990 และยังคงพบได้ในลีนุกซ์ทุกรุ่น มีเครื่องมือบีบอัดอื่นๆ ให้ใช้งาน แต่ไม่ว่าคุณจะต้องใช้งานคอมพิวเตอร์ Linux เครื่องไหน คุณจะพบ gzip ได้ ดังนั้นหากคุณรู้วิธีใช้ gzip คุณก็พร้อมลุยโดยไม่ต้องติดตั้งอะไรเลย

gzip คือการนำอัลกอริธึม DEFLATE ไปใช้งาน ซึ่งถูกประดิษฐ์ขึ้นและจดสิทธิบัตรโดย Phil Katz แห่ง PKZIP ที่มีชื่อเสียง อัลกอริธึม DEFLATE ได้รับการปรับปรุงในอัลกอริธึมการบีบอัดก่อนหน้านี้ ซึ่งทั้งหมดดำเนินการกับรูปแบบต่างๆ ของธีม ข้อมูลที่จะบีบอัดจะถูกสแกน และมีการระบุสตริงเฉพาะและเพิ่มลงในไบนารีทรี

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

เกณฑ์มาตรฐาน: รูปแบบการบีบอัดไฟล์ที่ดีที่สุดคืออะไร
เกณฑ์มาตรฐาน ที่เกี่ยวข้อง : รูปแบบการบีบอัดไฟล์ที่ดีที่สุดคืออะไร

อัลกอริธึม DEFLATE เพิ่มความบิดเบี้ยวที่สตริงที่พบบ่อยที่สุดได้รับการจัดสรรโทเค็นที่เล็กที่สุด และสตริงที่พบน้อยที่สุดได้รับการจัดสรรที่ใหญ่กว่า อัลกอริธึม DEFLATE ยังรวมแนวคิดจากวิธีการบีบอัดสองวิธีก่อนหน้านี้ ได้แก่ การเข้ารหัส Huffman และการบีบอัด LZ77

ในขณะที่เขียน อัลกอริธึม DEFLATE นั้นมีอายุเกือบสามทศวรรษแล้ว สามทศวรรษที่แล้วค่าใช้จ่ายในการจัดเก็บข้อมูลสูงและความเร็วในการส่งช้า การบีบอัดข้อมูลมีความสำคัญอย่างยิ่ง

4 วิธีในการเพิ่มพื้นที่ว่างในดิสก์บน Linux
4 วิธี ที่เกี่ยวข้อง ในการเพิ่มพื้นที่ว่างในดิสก์บน Linux

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

คำสั่ง gzip

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

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

ในการบีบอัดไฟล์ สิ่งที่คุณต้องทำคือส่งชื่อไฟล์ไปที่คำสั่ง gzip เราจะตรวจสอบขนาดดั้งเดิมของไฟล์ บีบอัด แล้วตรวจสอบขนาดของไฟล์ที่บีบอัด

 ls -lh calc-sheet.ods
 gzip calc-sheet.ods
 ls -lh แคล-* 

บีบอัดสเปรดชีต

ไฟล์ต้นฉบับ สเปรดชีตชื่อ “calc-sheet.ods” มีขนาด 11 KB และไฟล์บีบอัด หรือที่เรียกว่าไฟล์เก็บถาวร มีขนาด 9.3 KB โปรดทราบว่าชื่อไฟล์เก็บถาวรคือชื่อของไฟล์ต้นฉบับที่มี “.gz” ต่อท้าย

การใช้งานครั้งแรกของคำสั่ง ls กำหนดเป้าหมายไฟล์เฉพาะ สเปรดชีต การใช้ ls ครั้งที่สองจะค้นหาไฟล์ทั้งหมดที่ขึ้นต้นด้วย “calc-” แต่จะพบเฉพาะไฟล์บีบอัดเท่านั้น นั่นเป็นเพราะตามค่าเริ่มต้น gzip จะสร้างไฟล์เก็บถาวรและลบไฟล์ต้นฉบับ

นั่นไม่ใช่ปัญหา หากคุณต้องการไฟล์ต้นฉบับ คุณสามารถดึงมันมาจากไฟล์เก็บถาวร แต่ถ้าคุณต้องการเก็บไฟล์ต้นฉบับไว้ คุณสามารถใช้ตัวเลือก -k (เก็บ)

 gzip -k calc-sheet.ods
 ls -lh แคลชีต.* 

บีบอัดไฟล์และเก็บไฟล์ต้นฉบับไว้

คราวนี้ไฟล์ ODS ดั้งเดิมจะยังคงอยู่

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

หากต้องการขยายไฟล์เก็บถาวร GZ ให้ใช้ตัวเลือก -d (ขยายขนาด) การดำเนินการนี้จะแยกไฟล์บีบอัดออกจากไฟล์เก็บถาวรและคลายการบีบอัดเพื่อไม่ให้แยกความแตกต่างจากไฟล์ต้นฉบับ

 ls แคลชีต.*
 gzip -d calc-sheet.ods.gz
 ls แคลชีต.* 

แตกไฟล์ด้วย gzip

คราวนี้เราจะเห็นว่า gzip ได้ลบไฟล์เก็บถาวรหลังจากแตกไฟล์ต้นฉบับ ในการเก็บไฟล์เก็บถาวรไว้ เราจำเป็นต้องใช้ตัวเลือก -k (keep) อีกครั้ง เช่นเดียวกับตัวเลือก -d (ขยายขนาด)

 ls แคลชีต.*
 gzip -d calc-sheet.ods.gz
 ls แคลชีต.* 

คลายไฟล์และเก็บไฟล์เก็บถาวร

คราวนี้ gzip จะไม่ลบไฟล์เก็บถาวร

ที่เกี่ยวข้อง: เหตุใดไฟล์ที่ถูกลบจึงสามารถกู้คืนได้ และคุณจะป้องกันได้อย่างไร

คลายการบีบอัดและเขียนทับ

หากคุณพยายามแตกไฟล์ในไดเร็กทอรีที่มีไฟล์ต้นฉบับหรือไฟล์อื่นที่มีไฟล์เดียวกันอยู่ gzip จะแจ้งให้คุณเลือกยกเลิกการแตกไฟล์หรือเขียนทับไฟล์ที่มีอยู่

 gzip -d text-file.txt.gz 

เขียนทับข้อความแจ้งจาก gzip เมื่อไฟล์ในไฟล์เก็บถาวรมีอยู่แล้วในไดเร็กทอรี

หากคุณทราบล่วงหน้าว่าคุณยินดีที่จะให้ไฟล์ในไดเร็กทอรีเขียนทับโดยไฟล์จากไฟล์เก็บถาวร ให้ใช้ตัวเลือก -f (บังคับ)

 gzip -df text-file.txt.gz 

บังคับให้เขียนทับไฟล์ที่มีอยู่

ไฟล์ถูกเขียนทับและคุณจะถูกส่งกลับไปยังบรรทัดคำสั่งโดยไม่โต้ตอบ

บีบอัดแผนผังไดเร็กทอรี

ตัวเลือก -r (เรียกซ้ำ) ทำให้ gzip บีบอัดไฟล์ในแผนผังไดเร็กทอรีทั้งหมด แต่ผลลัพธ์อาจไม่ใช่สิ่งที่คุณคาดหวัง

นี่คือแผนผังไดเร็กทอรีที่เราจะใช้ในตัวอย่างนี้ ไดเร็กทอรีแต่ละรายการมีไฟล์ข้อความ

 ระดับต้นไม้1 

ทดสอบโครงสร้างแผนผังไดเร็กทอรี

ลองใช้ gzip บนแผนผังไดเร็กทอรีและดูว่าเกิดอะไรขึ้น

 gzip -r ระดับ1/
 ระดับต้นไม้1 

โครงสร้างไดเร็กทอรีหลังจากรัน gzip กับมัน

ผลลัพธ์คือ gzip ได้สร้างไฟล์เก็บถาวรสำหรับไฟล์ข้อความแต่ละไฟล์ในโครงสร้างไดเร็กทอรี มันไม่ได้สร้างไฟล์เก็บถาวรของแผนผังไดเร็กทอรีทั้งหมด อันที่จริง gzip สามารถใส่ไฟล์เดียวในไฟล์เก็บถาวรเท่านั้น

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

 tar -czvf level1.tar.gz level1

ตัวเลือก tar คือ:

  • c : สร้างไฟล์เก็บถาวร
  • z : พุชไฟล์ผ่าน gzip
  • v : โหมดละเอียด พิมพ์ในหน้าต่างเทอร์มินัลว่า tar นั้นขึ้นอยู่กับอะไร
  • f level1.tar.gz : ชื่อไฟล์ที่จะใช้สำหรับไฟล์เก็บถาวร

เอาต์พุตจาก tar ทำงานผ่านแผนผังไดเร็กทอรี

สิ่งนี้จะเก็บถาวรโครงสร้างแผนผังไดเร็กทอรีและไฟล์ทั้งหมดภายในแผนผังไดเร็กทอรี

ที่เกี่ยวข้อง: วิธีบีบอัดและแตกไฟล์โดยใช้คำสั่ง tar บน Linux

การรับข้อมูลเกี่ยวกับจดหมายเหตุ

ตัวเลือก -l (รายการ) ให้ข้อมูลบางอย่างเกี่ยวกับไฟล์เก็บถาวร โดยจะแสดงขนาดไฟล์ที่บีบอัดและไม่บีบอัดในไฟล์เก็บถาวร อัตราการบีบอัด และชื่อไฟล์

 gzip -l leve1.tar.gz
 gzip -l text-file.txt.gz 

การใช้ตัวเลือกรายการ -l เพื่อดูสถิติการบีบอัดสำหรับไฟล์เก็บถาวร

คุณสามารถตรวจสอบความสมบูรณ์ของไฟล์เก็บถาวรได้ด้วยตัวเลือก -t (ทดสอบ)

 gzip -t level1.tar.gz 

การทดสอบไฟล์เก็บถาวรด้วยตัวเลือก -t

ถ้าทุกอย่างเรียบร้อยดี คุณจะกลับไปที่บรรทัดคำสั่งอย่างเงียบๆ ไม่มีข่าวเป็นข่าวดี

หากไฟล์เก็บถาวรเสียหายหรือไม่ใช่ไฟล์เก็บถาวร คุณจะได้รับแจ้งเกี่ยวกับข้อมูลดังกล่าว

 gzip -t not-an-archive.gz 

การใช้ตัวเลือก -t เพื่อทดสอบไฟล์ที่ไม่ใช่ไฟล์เก็บถาวร

ความเร็วกับการบีบอัด

คุณสามารถเลือกจัดลำดับความสำคัญของความเร็วของการสร้างไฟล์เก็บถาวรหรือระดับของการบีบอัด คุณทำได้โดยระบุตัวเลขเป็นตัวเลือก ตั้งแต่ -1 ถึง top -9 ตัวเลือก -1 ให้ความเร็วที่เร็วที่สุดที่เสียสละของการบีบอัดและ -9 ให้การบีบอัดสูงสุดที่เสียสละความเร็ว

ยกเว้นว่าคุณระบุตัวเลือกใดตัวเลือกหนึ่งเหล่านี้ gzip จะใช้ -6

 gzip -1 calc-sheet.ods
 ls -lh calc-sheet.ods.gz
 gzip -9 calc-sheet.ods
 ls -lh calc-sheet.ods.gz
 gzip -6 calc-sheet.ods
 ls -lh calc-sheet.ods.gz 

การใช้ gzip ที่มีลำดับความสำคัญต่างกันสำหรับความเร็วและการบีบอัด

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

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

ถูกบีบอัด ไม่ได้รับการปกป้อง

อย่าเข้าใจผิดในการบีบอัดเพื่อการเข้ารหัสหรือการป้องกันรูปแบบใดๆ การบีบอัดไฟล์ไม่ได้ให้ความปลอดภัยหรือความเป็นส่วนตัวที่เพิ่มขึ้น ทุกคนที่เข้าถึงไฟล์ของคุณสามารถใช้ gzip เพื่อขยายขนาดไฟล์ได้

ที่เกี่ยวข้อง: แสดงรายการไฟล์หรือไดเรกทอรีที่ใหญ่ที่สุด 10 รายการบน Linux