หากคุณพบไฟล์ที่มีนามสกุล .gz ในโฟลเดอร์ต่างๆ แสดงว่าไฟล์เหล่านั้นถูกบีบอัดด้วยคำสั่ง gzip ซึ่งใช้อัลกอริทึมการบีบอัด Lempel-Ziv (LZ77) เพื่อลดขนาดไฟล์ เช่น เอกสาร รูปภาพ หรือไฟล์เสียง หลังจากบีบอัดไฟล์ด้วย gzip แล้ว คุณจะต้องแตกไฟล์ (decompress) ก่อนจึงจะใช้งานได้ บทความนี้จะแนะนำวิธีการแตกไฟล์ที่ถูกบีบอัดด้วย gzip อย่างละเอียด
แตกไฟล์ด้วยคำสั่ง gzip
คำสั่ง gzip เองก็มีตัวเลือกสำหรับแตกไฟล์ที่มีนามสกุล .gz ได้
หากต้องการแตกไฟล์ ให้ใช้สวิตช์ -d ดังนี้:
gzip -d myfilename.gz
ไฟล์จะถูกแตกออก และนามสกุล .gz จะถูกลบออกไป
แตกไฟล์ด้วยคำสั่ง gunzip (แนะนำ)
แม้คำสั่ง gzip จะใช้ได้ แต่คำสั่ง gunzip จดจำง่ายกว่า และถูกออกแบบมาสำหรับการแตกไฟล์โดยเฉพาะ ตัวอย่างการใช้งาน:
gunzip myfilename.gz
บังคับให้แตกไฟล์ด้วยตัวเลือก -f
บางครั้ง gunzip อาจปฏิเสธการแตกไฟล์ 原因หลักคือ ชื่อไฟล์หลังแตกซ้ำกับไฟล์ที่มีอยู่แล้วในโฟลเดอร์เดียวกัน
ตัวอย่าง: คุณมีไฟล์ document1.doc.gz และต้องการแตก แต่ในโฟลเดอร์เดิมก็มี document1.doc อยู่แล้ว การรันคำสั่งปกติจะแสดงข้อความเตือนและรอการยืนยัน (พิมพ์ Y เพื่อทับไฟล์เดิม) ซึ่งไม่เหมาะสำหรับสคริปต์อัตโนมัติ
ใช้ตัวเลือก -f (force) เพื่อบังคับทับไฟล์โดยไม่ถาม:
gunzip -f document1.doc.gz
คำเตือน: ใช้ -f อย่างระมัดระวัง เพราะจะทับไฟล์เดิมทันทีโดยไม่มีการยืนยัน
เก็บไฟล์บีบอัดและไฟล์ที่แตกแล้วพร้อมกันด้วย -k
ปกติ gunzip จะลบไฟล์ .gz หลังแตกแล้ว แต่หากต้องการเก็บทั้งสองไฟล์ ใช้ตัวเลือก -k (keep):
gunzip -k myfile.gz
ผลลัพธ์: คุณจะได้ทั้ง myfile (ไฟล์แตกแล้ว) และ myfile.gz (ไฟล์บีบอัดต้นฉบับ)
แสดงเนื้อหาไฟล์ข้อความโดยไม่ต้องแตกด้วย -c
หากไฟล์ .gz เป็นไฟล์ข้อความ สามารถดูเนื้อหาได้ทันทีโดยไม่แตกไฟล์:
gunzip -c myfile.gz
คำสั่งนี้จะแสดงเนื้อหาของ myfile.gz มาที่เทอร์มินัล (stdout)
ดูข้อมูลรายละเอียดไฟล์บีบอัดด้วย -l
ใช้ตัวเลือก -l (list) เพื่อดูข้อมูลของไฟล์บีบอัด:
gunzip -l myfile.gz
ผลลัพธ์จะแสดงข้อมูลดังนี้:
- Compressed size (ขนาดหลังบีบอัด)
- Uncompressed size (ขนาดจริงหลังแตก)
- Ratio (อัตราส่วนการบีบอัด)
- Uncompressed filename (ชื่อไฟล์หลังแตก)
ข้อมูลนี้มีประโยชน์มากเมื่อต้องจัดการไฟล์ขนาดใหญ่ หรือพื้นที่ดิสก์จำกัด เช่น ไฟล์บีบอัด 8 GB แต่แตกแล้ว 15 GB ในดิสก์ 10 GB จะทำให้แตกไม่สำเร็จ การเช็คด้วย -l ก่อนจะป้องกันปัญหานี้ได้
แตกไฟล์ทุกไฟล์ในโฟลเดอร์และโฟลเดอร์ย่อยแบบ Recursive ด้วย -r
หากต้องการแตกไฟล์ .gz ทั้งหมดในโฟลเดอร์และโฟลเดอร์ย่อยทั้งหมด:
gunzip -r foldername
ตัวอย่างโครงสร้าง:
- Documents
- mydoc.gz
- mydoc1.gz
- Accounts
- spreadsheet1.gz
- spreadsheet2.gz
รัน gunzip -r Documents จะแตกไฟล์ทั้ง 4 ไฟล์พร้อมกัน
ทดสอบความถูกต้องของไฟล์บีบอัดด้วย -t
ใช้ตัวเลือก -t (test) เพื่อตรวจสอบว่าไฟล์ .gz ถูกสร้างมาอย่างถูกต้องหรือไม่:
gunzip -t filename.gz
หากไฟล์เสียหาย จะแสดงข้อความผิดพลาด หากถูกต้อง จะไม่มีข้อความใดๆ (exit code 0)
แสดงข้อมูลรายละเอียดระหว่างแตกไฟล์ด้วย -v
ใช้ตัวเลือก -v (verbose) เพื่อดูขั้นตอนการแตกไฟล์:
gunzip -v filename.gz
ผลลัพธ์ตัวอย่าง:
filename.gz: 20% -- replaced with filename
แสดงชื่อไฟล์ต้นฉบับ อัตราการแตก และชื่อไฟล์ผลลัพธ์