เรื่อง "มากขึ้น" และ "เร็วขึ้น" คือสิ่งที่เราต้องการเสมอ โดยเฉพาะเมื่อพูดถึงข้อมูล ปัญหาคือ "มากขึ้น" และ "เร็วขึ้น" มักจะขัดแย้งกัน จึงมีเทคโนโลยีการบีบอัดไฟล์ (file compression) ใน Linux มีเครื่องมือบีบอัดไฟล์หลายอย่างที่ติดมากับทุกการกระจาย (distribution) ซึ่งเรียกกันว่า Linux distros โดย Zip น่าจะเป็นที่นิยมมากที่สุด โปรแกรม Zip สามารถใช้งานได้ทั้งผ่าน GUI และเทอร์มินัล
การ Zip ไฟล์ใน Linux GUI
- ไปที่ไฟล์ที่ต้องการบีบอัดและเลือกไฟล์เหล่านั้น แล้วคลิกขวาและเลือก Compress (บีบอัด)
- ใส่ชื่อสำหรับไฟล์บีบอัด สังเกตว่าคุณยังสามารถเลือกประเภทการบีบอัดอื่นอีก 2 แบบได้ (อาจแตกต่างกันไปตาม distro)
- เร็วๆ นี้คุณจะเห็นไฟล์บีบอัดที่สร้างขึ้น สังเกตว่าขนาดของไฟล์บีบอัดจะเล็กกว่าขนาดรวมของไฟล์ที่นำไปบีบอัดมาก
การ Unzip ไฟล์ใน Linux GUI
- หาไฟล์บีบอัดที่ต้องการแตกคลิกขวาเลือก Extract Here (แตกที่นี่) หรือ Extract to… (แตกไปที่…) Extract Here จะแตกไฟล์ไว้ในโฟลเดอร์เดียวกัน Extract to… จะให้คุณเลือกที่อื่น
ไฟล์ถูกแตกออกมาแล้ว สังเกตว่าขนาดกลับมาเป็นขนาดเต็ม 100 MB ต่อไฟล์
ใช้ Archive Manager แตกไฟล์ใน Linux GUI
บาง distro มีวิธีแตกไฟล์อื่นในตัว เช่น Archive Manager
- คลิกขวาที่ไฟล์บีบอัด เลือก Open With Archive Manager (เปิดด้วย Archive Manager)
- เลือกไฟล์ที่ต้องการแตกโดยคลิกเดี่ยว สามารถเลือกได้ 1 ไฟล์ หลายไฟล์ หรือทั้งหมด แล้วกด Extract มุมซ้ายบน
- เลือกโฟลเดอร์ปลายทางในไฟล์แมเนเจอร์ แล้วกด Extract มุมขวาบน
- เมื่อแตกเสร็จ สามารถกด Show the Files (แสดงไฟล์) ได้
ไฟล์กลับมาขนาดเต็ม สำเนายังคงอยู่ในไฟล์บีบอัด
Zip ไฟล์ใน Linux Terminal
เปิดเทอร์มินัล ไปที่ไดเรกทอรีที่มีไฟล์ต้องการบีบอัด พิมพ์คำสั่ง zip ziptest.zip *
zip เรียกใช้โปรแกรม zip ziptest.zip คือชื่อไฟล์บีบอัด asterisk (*) คือ wildcard หมายถึงบีบอัดไฟล์ทั้งหมดในโฟลเดอร์นี้
โปรแกรมจะบีบอัด แสดงรายชื่อไฟล์ และบอกเปอร์เซ็นต์ที่บีบอัดได้ (deflated)
คำสั่ง zip มีตัวเลือกมากมาย พิมพ์ zip –help เพื่อดูรายการ
Unzip ไฟล์ใน Linux Terminal
ในเทอร์มินัล ใช้คำสั่ง unzip ziptest.zip โดย unzip คือคำสั่ง ziptest.zip คือชื่อไฟล์บีบอัด
จะแสดงไฟล์ที่กำลังแตกออกมา รู้ได้ว่าทำเสร็จเมื่อไหร่
เหมือน zip คำสั่ง unzip ก็มีตัวเลือกมาก พิมพ์ unzip –help เพื่อดู
Bzip2 สำหรับ Zip และ Unzip ใน Linux
Bzip2 เป็นโปรแกรมบีบอัดอีกตัวที่อยู่ใน distro ส่วนใหญ่ จุดแตกต่างคือ bzip2 ไม่สามารถรวมหลายไฟล์เป็นไฟล์บีบอัดเดียวได้ แต่ละไฟล์จะได้ไฟล์บีบอัดแยกกัน
Zip ไฟล์ด้วย Bzip2 ใน Terminal
พิมพ์ bzip2 -kv9 testfile1.txt testfile2.txt
-kv9 แปลว่า k = keep (เก็บไฟล์ต้นฉบับ) v = verbose (แสดงรายละเอียด) 9 = ระดับบีบอัดสูงสุด (1-9) ยิ่งสูง ยิ่งนาน
ผลลัพธ์แสดงรายละเอียดมากกว่า zip แต่ขนาดไฟล์เกือบเท่ากัน
Unzip ด้วย Bzip2 ใน Terminal
พิมพ์ bzip2 -kvd testfile1.txt.bz2 testfile2.txt.bz2 โดย -kvd คือ k keep archives v verbose d decompress
แสดงไฟล์ที่กำลังแตก รู้ได้ว่าทำเสร็จเมื่อไหร่
ดูตัวเลือก bzip2 พิมพ์ bzip2 –help ลองเล่นกับไฟล์ไม่สำคัญเพื่อดูความสามารถ
Gzip สำหรับ Zip และ Unzip ใน Linux
Gzip เป็นตัวบีบอัดยอดนิยมตัวสุดท้ายที่มากับ distro ส่วนใหญ่ เบากว่า bzip2 และ zip ด้านตัวเลือก แต่คุณภาพการบีบอัดก็ประมาณเท่ากัน
Zip ด้วย Gzip ใน Terminal
พิมพ์ gzip -kv9 testfile1.txt testfile2.txt (หมายเหตุ: คำสั่งคือ gzip ไม่ใช่ gzip2) ตัวเลือก -kv9 เหมือน bzip2
จาก verbose output เห็นว่า gzip ทำงานได้ประมาณเท่า Zip อื่นๆ
Unzip ด้วย Gzip ใน Terminal
มี 2 วิธี: ใช้ gzip หรือ gunzip
สำหรับ gzip: gzip -kvd testfile1.txt.gz testfile2.txt.gz ตัวเลือก d = decompress
สำหรับ gunzip: gunzip testfile1.txt.gz testfile2.txt.gz ไม่ต้องใส่ตัวเลือกสำหรับการแตกพื้นฐาน
Tar สำหรับ Zip และ Unzip ใน Linux?
ทำไมยังไม่ได้พูดถึง tar? มันคือเครื่องมือเก็บถาวร (archiving) รวมหลายไฟล์เป็นไฟล์เดียวเพื่อส่งถ่ายง่าย ขนาดไฟล์ tar จะเท่ากับขนาดรวมของไฟล์ต้นฉบับ
แต่ถ้ารวมวิธีบีบอัดกับ tar จะได้แพ็กเกจเดียวที่บีบอัดแล้ว วิธี zip อื่นๆ บนโฟลเดอร์จะได้ไฟล์บีบอัดแยกต่อไฟล์ แต tar กับ gzip บนโฟลเดอร์จะบีบอัดทั้งหมดเป็นไฟล์เดียว
Zip ด้วย Tar และ Gzip ใน Terminal
พิมพ์ tar -czvf Documents.tgz Documents
-czvf แปลว่า c = create สร้างไฟล์เก็บถาวรใหม่ z = compress with gzip v = verbose f = file = archive (เก็บโครงสร้างไฟล์)
ชื่อไฟล์ใหม่คือ Documents.tgz 副檔名 .tgz บอกว่าเป็น tar ที่ gzip แล้ว สุดท้าย Documents คือโฟลเดอร์ที่จะบีบอัด
ผลลัพธ์ประมาณนี้
ใน File Manager เห็นไฟล์ tar ที่บีบอัดแล้ว
Unzip ด้วย Tar และ Gzip ใน Terminal
แตกไฟล์ tar.gz ใช้คำสั่ง tar เดียวกัน ตัวเลือกต่างออกไป
พิมพ์ tar -xzvf Documents.tgz Documents
-xzvf แปลว่า x = extract z = unzip with gzip v = verbose f = file=archive (เก็บโครงสร้าง) Documents.tgz คือไฟล์ที่จะแตก Documents คือโฟลเดอร์ปลายทาง
ผลลัพธ์: ไฟล์ 2 ไฟล์กลับมาขนาดเต็ม อยู่ในโฟลเดอร์ Documents
ดูตัวเลือก tar พิมพ์ tar –help จะได้หลายหน้า มีวิธีบีบอัดอื่นนอกจาก gzip ให้เลือก
เครื่องมือ Zip ที่นิยมน้อยกว่าใน Linux
ยังมีเครื่องมือบีบอัดอีก 2 ตัวใน distro ส่วนใหญ่ แต่นิยมน้อย อยู่ในรายการเพื่อให้รู้จัก
LZMA
LZMA เป็นโปรแกรมบีบอัดบรรทัดคำสั่งที่พบบ่อยใน Linux เป็นอัลกอริทึมที่ 7-Zip ใช้
XZ
XZ เป็นเครื่องมือบีบอัดบรรทัดคำสั่งที่มากับ Linux ตัวเลือกคล้าย bzip2 基於 LZMA2 algorithm ซึ่งพัฒนาจาก LZMA
ดูรายละเอียดเพิ่มเติมพิมพ์ lzma –help และ xz –help
ยังมีวิธี Zip และ Unzip อื่นใน Linux อีกไหม?
เราเพียงครอบคลุมเครื่องมือที่มากับ distro ส่วนใหญ่ Linux ยังมีวิธีอื่นอีกมาก บางตัวมี GUI บางตัว CLI บางตัวทั้งคู่ คุณใช้เครื่องมือไหนบ้าง? ชอบตัวไหนและทำไม? แชร์ในความคิดเห็นได้เลย!