วิธี Zip และ Unzip ไฟล์ด้วย Gzip บน Linux
เผยแพร่แล้ว: 2022-06-28
มียูทิลิตี้บีบอัดไฟล์มากมาย แต่ยูทิลิตี้ที่คุณรับประกันว่าจะพบในทุกการกระจาย Linux คือ gzip
หากคุณเรียนรู้การใช้เครื่องมือบีบอัดเพียงเครื่องมือเดียว เครื่องมือนั้นควรเป็น gzip
ที่เกี่ยวข้อง: การบีบอัดไฟล์ทำงานอย่างไร?
อัลกอริทึมและต้นไม้
เครื่องมือบีบอัดข้อมูล gzip
ถูกเขียนขึ้นในช่วงต้นทศวรรษ 1990 และยังคงพบได้ในลีนุกซ์ทุกรุ่น มีเครื่องมือบีบอัดอื่นๆ ให้ใช้งาน แต่ไม่ว่าคุณจะต้องใช้งานคอมพิวเตอร์ Linux เครื่องไหน คุณจะพบ gzip
ได้ ดังนั้นหากคุณรู้วิธีใช้ gzip
คุณก็พร้อมลุยโดยไม่ต้องติดตั้งอะไรเลย
gzip
คือการนำอัลกอริธึม DEFLATE ไปใช้งาน ซึ่งถูกประดิษฐ์ขึ้นและจดสิทธิบัตรโดย Phil Katz แห่ง PKZIP ที่มีชื่อเสียง อัลกอริธึม DEFLATE ได้รับการปรับปรุงในอัลกอริธึมการบีบอัดก่อนหน้านี้ ซึ่งทั้งหมดดำเนินการกับรูปแบบต่างๆ ของธีม ข้อมูลที่จะบีบอัดจะถูกสแกน และมีการระบุสตริงเฉพาะและเพิ่มลงในไบนารีทรี
สตริงที่ไม่ซ้ำจะได้รับการจัดสรรโทเค็น ID ที่ไม่ซ้ำโดยอาศัย ตำแหน่งในแผนผัง โทเค็นใช้เพื่อแทนที่สตริงในข้อมูล และเนื่องจากโทเค็นมีขนาดเล็กกว่าข้อมูลที่แทนที่ ไฟล์จึงถูกบีบอัด การแทนที่โทเค็นสำหรับสตริงดั้งเดิมจะขยายข้อมูลกลับเป็นสถานะที่ไม่มีการบีบอัดอีกครั้ง
อัลกอริธึม DEFLATE เพิ่มความบิดเบี้ยวที่สตริงที่พบบ่อยที่สุดได้รับการจัดสรรโทเค็นที่เล็กที่สุด และสตริงที่พบน้อยที่สุดได้รับการจัดสรรที่ใหญ่กว่า อัลกอริธึม DEFLATE ยังรวมแนวคิดจากวิธีการบีบอัดสองวิธีก่อนหน้านี้ ได้แก่ การเข้ารหัส Huffman และการบีบอัด LZ77
ในขณะที่เขียน อัลกอริธึม DEFLATE นั้นมีอายุเกือบสามทศวรรษแล้ว สามทศวรรษที่แล้วค่าใช้จ่ายในการจัดเก็บข้อมูลสูงและความเร็วในการส่งช้า การบีบอัดข้อมูลมีความสำคัญอย่างยิ่ง
การจัดเก็บข้อมูลมีราคาถูกลงมากในปัจจุบัน และความเร็วในการส่งก็เร็วกว่ามาก แต่เรามีข้อมูลให้จัดเก็บอีกมาก และผู้คนทั่วโลกต่างเข้าถึงที่เก็บข้อมูลบนคลาวด์และบริการสตรีมมิ่ง การบีบอัดข้อมูลยังคงมีความ สำคัญอย่าง ยิ่ง แม้ว่าสิ่งที่คุณทำคือการลดขนาดสิ่งที่คุณต้องอัปโหลดหรือส่ง หรือคุณกำลังพยายามเรียกคืนพื้นที่บางส่วนบนฮาร์ดไดรฟ์ในเครื่อง
คำสั่ง 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
ได้ลบไฟล์เก็บถาวรหลังจากแตกไฟล์ต้นฉบับ ในการเก็บไฟล์เก็บถาวรไว้ เราจำเป็นต้องใช้ตัวเลือก -k
(keep) อีกครั้ง เช่นเดียวกับตัวเลือก -d
(ขยายขนาด)
ls แคลชีต.*
gzip -d calc-sheet.ods.gz
ls แคลชีต.*
คราวนี้ gzip จะไม่ลบไฟล์เก็บถาวร
ที่เกี่ยวข้อง: เหตุใดไฟล์ที่ถูกลบจึงสามารถกู้คืนได้ และคุณจะป้องกันได้อย่างไร
คลายการบีบอัดและเขียนทับ
หากคุณพยายามแตกไฟล์ในไดเร็กทอรีที่มีไฟล์ต้นฉบับหรือไฟล์อื่นที่มีไฟล์เดียวกันอยู่ gzip
จะแจ้งให้คุณเลือกยกเลิกการแตกไฟล์หรือเขียนทับไฟล์ที่มีอยู่

gzip -d text-file.txt.gz
หากคุณทราบล่วงหน้าว่าคุณยินดีที่จะให้ไฟล์ในไดเร็กทอรีเขียนทับโดยไฟล์จากไฟล์เก็บถาวร ให้ใช้ตัวเลือก -f (บังคับ)
gzip -df text-file.txt.gz
ไฟล์ถูกเขียนทับและคุณจะถูกส่งกลับไปยังบรรทัดคำสั่งโดยไม่โต้ตอบ
บีบอัดแผนผังไดเร็กทอรี
ตัวเลือก -r
(เรียกซ้ำ) ทำให้ gzip
บีบอัดไฟล์ในแผนผังไดเร็กทอรีทั้งหมด แต่ผลลัพธ์อาจไม่ใช่สิ่งที่คุณคาดหวัง
นี่คือแผนผังไดเร็กทอรีที่เราจะใช้ในตัวอย่างนี้ ไดเร็กทอรีแต่ละรายการมีไฟล์ข้อความ
ระดับต้นไม้1
ลองใช้ gzip
บนแผนผังไดเร็กทอรีและดูว่าเกิดอะไรขึ้น
gzip -r ระดับ1/
ระดับต้นไม้1
ผลลัพธ์คือ gzip
ได้สร้างไฟล์เก็บถาวรสำหรับไฟล์ข้อความแต่ละไฟล์ในโครงสร้างไดเร็กทอรี มันไม่ได้สร้างไฟล์เก็บถาวรของแผนผังไดเร็กทอรีทั้งหมด อันที่จริง gzip
สามารถใส่ไฟล์เดียวในไฟล์เก็บถาวรเท่านั้น
เราสามารถสร้างไฟล์เก็บถาวรที่มีแผนผังไดเร็กทอรีและไฟล์ทั้งหมดได้ แต่เราจำเป็นต้องนำคำสั่งอื่นมาใช้ในการเล่น โปรแกรม tar
ใช้สำหรับสร้างไฟล์เก็บถาวรของไฟล์จำนวนมาก แต่ไม่มีรูทีนในการบีบอัดของตัวเอง แต่ด้วยการใช้ตัวเลือกที่เหมาะสมกับ tar
เราสามารถทำให้ tar
ส่งไฟล์เก็บถาวรผ่าน gzip
ได้ ด้วยวิธีนี้เราจะได้ไฟล์บีบอัดและไฟล์เก็บถาวรแบบหลายไฟล์หรือแบบหลายไดเร็กทอรี
tar -czvf level1.tar.gz level1
ตัวเลือก tar
คือ:
- c : สร้างไฟล์เก็บถาวร
- z : พุชไฟล์ผ่าน
gzip
- v : โหมดละเอียด พิมพ์ในหน้าต่างเทอร์มินัลว่า
tar
นั้นขึ้นอยู่กับอะไร - f level1.tar.gz : ชื่อไฟล์ที่จะใช้สำหรับไฟล์เก็บถาวร
สิ่งนี้จะเก็บถาวรโครงสร้างแผนผังไดเร็กทอรีและไฟล์ทั้งหมดภายในแผนผังไดเร็กทอรี
ที่เกี่ยวข้อง: วิธีบีบอัดและแตกไฟล์โดยใช้คำสั่ง tar บน Linux
การรับข้อมูลเกี่ยวกับจดหมายเหตุ
ตัวเลือก -l
(รายการ) ให้ข้อมูลบางอย่างเกี่ยวกับไฟล์เก็บถาวร โดยจะแสดงขนาดไฟล์ที่บีบอัดและไม่บีบอัดในไฟล์เก็บถาวร อัตราการบีบอัด และชื่อไฟล์
gzip -l leve1.tar.gz
gzip -l text-file.txt.gz
คุณสามารถตรวจสอบความสมบูรณ์ของไฟล์เก็บถาวรได้ด้วยตัวเลือก -t
(ทดสอบ)
gzip -t level1.tar.gz
ถ้าทุกอย่างเรียบร้อยดี คุณจะกลับไปที่บรรทัดคำสั่งอย่างเงียบๆ ไม่มีข่าวเป็นข่าวดี
หากไฟล์เก็บถาวรเสียหายหรือไม่ใช่ไฟล์เก็บถาวร คุณจะได้รับแจ้งเกี่ยวกับข้อมูลดังกล่าว
gzip -t not-an-archive.gz
ความเร็วกับการบีบอัด
คุณสามารถเลือกจัดลำดับความสำคัญของความเร็วของการสร้างไฟล์เก็บถาวรหรือระดับของการบีบอัด คุณทำได้โดยระบุตัวเลขเป็นตัวเลือก ตั้งแต่ -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
ด้วยไฟล์ที่มีขนาดเล็กขนาดนี้ เราไม่เห็นความแตกต่างอย่างมีนัยสำคัญในความเร็วของการดำเนินการ แต่มีความแตกต่างเล็กน้อยในการบีบอัด
ที่น่าสนใจคือไม่มีความแตกต่างระหว่างการใช้การบีบอัดระดับ 9 และการบีบอัดระดับ 6 คุณสามารถบีบอัดไฟล์ที่ต้องการได้มากเท่านั้น และในกรณีนี้ ถึงขีดจำกัดนั้นด้วยการบีบอัดระดับ 6 การหมุนเป็น 9 ไม่ได้ทำให้ขนาดไฟล์ลดลงอีก ด้วยไฟล์ที่ใหญ่กว่า ความแตกต่างระหว่างระดับ 6 และระดับ 9 จะชัดเจนยิ่งขึ้น
ถูกบีบอัด ไม่ได้รับการปกป้อง
อย่าเข้าใจผิดในการบีบอัดเพื่อการเข้ารหัสหรือการป้องกันรูปแบบใดๆ การบีบอัดไฟล์ไม่ได้ให้ความปลอดภัยหรือความเป็นส่วนตัวที่เพิ่มขึ้น ทุกคนที่เข้าถึงไฟล์ของคุณสามารถใช้ gzip
เพื่อขยายขนาดไฟล์ได้
ที่เกี่ยวข้อง: แสดงรายการไฟล์หรือไดเรกทอรีที่ใหญ่ที่สุด 10 รายการบน Linux