เรามักจะบีบอัด (compress)ไฟล์ให้มีขนาดเล็กลงเพื่อประหยัดพื้นที่ของฮาด์ดิสก์หรือเพื่อความรวดเร็วในการส่งไฟล์ข้อมูลข้ามเครือข่าย โดยลินุกซ์มีโปรแกรมในการบีบอัดไฟล์ให้เลือกใช้อยู่หลายตัว เช่น gzip (เป็นโปรแกรมที่ใช้กันมากที่สุด), bzip2 (สามารถบีบอัดไฟล์ให้มีขนาดเล็กได้มากกว่า gzip แต่ใช้เวลาในการทำงานมากกว่า มักใช้กับไฟล์ที่ใหญ่มากๆ), xz (สามารถบีบอัดไฟล์ให้มีขนาดได้เล็กมากที่สุดแต่ทำงานช้ากว่ามาก ปัจจุบันใช้ในการบีบอัดไฟล์ archive ของเคอร์เนล) และ zip (ในลินุกซ์ไม่ค่อยใช้ zip ในการบีบอัดไฟล์กันสักเท่าไร ส่วนมากใช้เพื่อขยายไฟล์ที่ได้รับมาจาก Windows) นอกจากนี้ยังมีโปรแกม tar ที่ใช้ในการรวมไฟล์หลายๆไฟล์ไว้ในไฟล์เดียวเรียกว่าไฟล์ archive จากนั้นจึงค่อยบีบอัดไฟล์ archive ทีเดียว ตัวอย่างผลลัพธ์ที่ได้จะเป็น filename.tar.gz ถ้าใช้ tar และ gzip
ข้อแตกต่างของโปรแกรมบีบอัดแต่ละตัวอยู่ที่จำนวนพื้นที่ที่ใช้ในการทำงาน ความเร็วในการทำงานและขนาดไฟล์หลังบีบอัดแล้ว ส่วนการขยายไฟล์ไม่ค่อยมีข้อแตกต่างกันเท่าไรนัก
คำสั่ง gzip
การบีบอัดไฟล์ด้วยโปรแกรม gzip ทำได้โดยใช้คำสั่ง gzip ตัวอย่างเช่น
- gzip * เป็นการสั่งบีบอัดไฟล์ทั้งหมดภายใต้ไดเร็คทอรี่ปัจจุบัน ไฟล์ที่ถูกบีบอัดแล้วจะมีชื่อ .gz ต่อท้าย
- gzip -r projectX เป็นการสั่งบีบอัดไฟล์ทั้งหมดภายใต้ไดเร็คทอรี่ projectX รวมถึงไดเร็คทอรี่ย่อยทั้งหมดภายใต้นั้น
- gunzip file.gz หรือ gzip -d เป็นการสั่งขยายไฟล์ที่ถูกบีบอัด
คำสั่ง bzip2
การบีบอัดไฟล์ด้วยโปรแกรม bzip2 ทำได้โดยใช้คำสั่ง bzip2 ตัวอย่างเช่น
- bzip2 * เป็นการสั่งบีบอัดไฟล์ทั้งหมดภายใต้ไดเร็คทอรี่ปัจจุบัน ไฟล์ที่ถูกบีบอัดแล้วจะมีชื่อ .bz2 ต่อท้าย
- bunzip2 *.bz2 หรือ bzip2 -d เป็นการสั่งขยายไฟล์ที่ถูกบีบอัด
คำสั่ง xz
การบีบอัดไฟล์ด้วยโปรแกรม xz ทำได้โดยใช้คำสั่ง xz ตัวอย่างเช่น
- xz * เป็นการสั่งบีบอัดไฟล์ทั้งหมดภายใต้ไดเร็คทอรี่ปัจจุบัน ไฟล์ที่ถูกบีบอัดแล้วจะมีชื่อ .xz ต่อท้าย
- xz filename เป็นการสั่งบีบอัดไฟล์ชื่อ filename เป็น filename.xz ด้วยการบีบอัดใน level 6 ซึ่งเป็น level มาตรฐาน และลบไฟล์ filename หลังจากทำงานเสร็จ
- xz -dk bar.x เป็นการสั่งขยายไฟล์ที่ถูกบีบอัด
- xz -dcf a.txt b.txt.xz > abcd.txt เป็นการสั่งขยายไฟล์มากกว่าหนึ่งไฟล์โดยมีทั้งไฟล์ที่ถูกบีบอัดและไฟล์ที่ไม่ได้ถูกบีบอัด โดยให้ผลลัพธ์รวมอยู่ในไฟล์เดียวกัน โดยใช้เพียงคำสั่งเดียว
- xz -d *.xz เป็นการสั่งขยายไฟล์ทุกไฟลืที่ถูกบีบอัดด้วย xz
คำสั่ง zip
การบีบอัดไฟล์ด้วยโปรแกรม zip ทำได้โดยใช้คำสั่ง zip ตัวอย่างเช่น
- zip backup * เป็นการสั่งบีบอัดไฟล์ทั้งหมดภายใต้ไดเร็คทอรี่ปัจจุบัน ไฟล์ที่ถูกบีบอัดแล้วจะมีชื่อ backup.zip
- zip -r backup.zip ~ เป็นการสั่งบีบอัดไฟล์และไดเร็คทอรี่ ทั้งหมดภายใต้ไดเร็คทอรี่ login ไฟล์ที่ถูกบีบอัดแล้วจะมีชื่อ backup.zip
- unzip backup.zip เป็นการสั่งขยายไฟล์และไดเร็คทอรี่ที่ถูกบีบอัดในไดเร็คทอรี่ปัจจุุบัน (present working directry)
คำสั่ง tar
tar ย่อมาจาก tape archive เพราะเดิมที tar ถูกใช้ในการรวมไฟล์ไปยังเทป (archive to magnetic tape) และใช้ในการแตกไฟล์ที่รวมไว้ เรามักเรียกไฟล์ archive ว่า tarball เราสามารถผนวกคำสั่งบีบอัดหรือขยายไฟล์ไปกับคำสั่ง tar ได้เลย ตัวอย่างการใช้งาน เช่น
- tar xvf mydir.tar เป็นการแตกไฟล์ที่รวมไว้ (mydir.tar) ลงในไดเร็คทอรี่ชื่อ mydir
- tar zcvf mydir.tar.gz mydir เป็นการรวมไฟล์และบีบอัดด้วย gzip
- tar jcvf mydir.tar.bz2 mydir เป็นการรวมไฟล์และบีบอัดด้วย bzip2
- tar Jcvf mydir.tar.xz mydir เป็นการรวมไฟล์และบีบอัดด้วย xz
- tar xvf mydir.tar.gz เป็นการขยายและแตกไฟล์ที่รวมไว้ (mydir.tar.gz) ลงในไดเร็คทอรี่ชื่อ mydir
การดำเนินการกับไฟล์ที่ถูกบีบอัด
ในการดำเนินการกับไฟล์ที่ถูกบีบอัดด้วยคำสั่ง gzip ถ้าเราไม่ขยายไฟล์จากการบีบอัดออกมาก่อนเราจะไม่สามารถใช้คำสั่งมาตรฐานที่ใช้ในการดำเนินการกับไฟล์ทั่วๆไปได้ แต่คำสั่งมาตรฐานหลายๆคำสั่งก็มีคำสั่งที่เป็นเวอร์ชั่นที่สามารถใช้ดำเนินการกับไฟล์ที่ถูกบีบอัดได้โดยที่ไม่ต้องขยายไฟล์ก่อนดำเนินการซึ่งจะมีตัว z นำหน้าคำสั่ง เช่น zcat, zless, zdiff, and zgrep ตัวอย่างการใช้งาน เช่น
- zcat filename.txt.gz เป็นการแสดงข้อความในไฟล์ compredded-file.txt.gz โดยใช้คำสั่ง zcat (ซึ่งถ้าเป็นไฟล์ธรรมดาที่ไม่ได้บีบอัดเราจะใช้คำสั่ง cat)
- zless filename.gz หรือ zmore filename.gz เป็นการแสดงข้อความในไฟล์ทีละหน้า filename.gz โดยใช้คำสั่ง zless หรือ zmore (ซึ่งถ้าเป็นไฟล์ธรรมดาที่ไม่ได้บีบอัดเราจะใช้คำสั่ง less หรือ more)
- zgrep -i less filename.txt.gz เป็นการค้นหาในไฟล์ที่ถูกบีบอัด
- zdiff filename1.txt.gz filename2.txt.gz เป็นการเปรียบเทียบไฟล์ที่ถูกบีบอัด 2 ไฟล์
คำสั่งสำหรับดำเนินการกับไฟล์ที่ถูกบีบอัดเหล่านี้สามารถใช้งานกับไฟล์ธรรมดาๆได้ด้วย ในกรณีที่เราเอาคำสั่งเหล่านี้ไปใช้กับไฟล์ธรรมดาที่ไม่ได้ถูกบีบอัด คำสั่งจะข้ามขั้นตอนการขยายไฟล์ก่อนดำเนินการไป นอกจากคำสั่งที่นำหน้าด้วย z สำหรับใช้กับไฟล์ที่ถูกบีบอัดด้วยคำสั่ง gzip แล้ว เรายังมีคำสั่งที่นำหน้าด้วย bz เช่น bzcat และ bzless เพื่อใช้กับไฟล์ที่ถูกบีบอัดด้วยคำสั่ง bzip2 และยังมีคำสั่งที่นำหน้าด้วย xz เช่น xzcat และ xzless เพื่อใช้กับไฟล์ที่ถูกบีบอัดด้วยคำสั่ง xz.