วิธีแยกไฟล์จากไฟล์ .tar.gz หรือ .tar.bz2 บน Linux

เผยแพร่แล้ว: 2022-01-29
Bash shell บนแนวคิดเดสก์ท็อป Unity
Fatmawati Achmad Zaenuri/Shutterstock.com

ไฟล์ Tar เป็นไฟล์บีบอัด คุณจะพบพวกเขาบ่อยครั้งในขณะที่ใช้การแจกจ่าย Linux เช่น Ubuntu หรือแม้แต่ในขณะที่ใช้เทอร์มินัลบน macOS ต่อไปนี้คือวิธีการแยกหรือ untar เนื้อหาของไฟล์ tar หรือที่เรียกว่า tarball

.tar.gz และ .tar.bz2 หมายถึงอะไร

ไฟล์ที่มีนามสกุล .tar.gz หรือ . .tar.bz2 เป็นไฟล์บีบอัดที่เก็บถาวร ไฟล์ที่มีนามสกุล . .tar จะไม่ถูกบีบอัด แต่จะหายากมาก

ส่วน . .tar ของนามสกุลไฟล์ย่อมาจาก t ape ar chive และเป็นสาเหตุที่ไฟล์ทั้งสองประเภทนี้เรียกว่าไฟล์ tar ไฟล์ Tar ย้อนหลังไปถึงปี 1979 เมื่อคำสั่ง tar ถูกสร้างขึ้นเพื่อให้ผู้ดูแลระบบสามารถเก็บไฟล์ไว้ในเทปได้ สี่สิบปีต่อมา เรายังคงใช้คำสั่ง tar เพื่อแยกไฟล์ tar ไปยังฮาร์ดไดรฟ์ของเรา อาจมีบางคนยังคงใช้ tar กับเทปอยู่

คำต่อท้ายส่วนขยาย .gz หรือ . .bz2 บ่งชี้ว่าไฟล์เก็บถาวรถูกบีบอัด โดยใช้อัลกอริธึมการบีบอัด gzip หรือ bzip2 คำสั่ง tar จะทำงานอย่างมีความสุขกับไฟล์ทั้งสองประเภท ดังนั้นจึงไม่สำคัญว่าจะใช้วิธีการบีบอัดแบบใด และควรมีให้ใช้งานได้ทุกที่ที่มี Bash shell คุณเพียงแค่ต้องใช้ตัวเลือกบรรทัดคำสั่ง tar ที่เหมาะสม

แยกไฟล์จากไฟล์ Tar

สมมติว่าคุณดาวน์โหลดไฟล์โน้ตเพลงสองไฟล์ ไฟล์หนึ่งชื่อ ukulele_songs.tar.gz อีกไฟล์หนึ่งชื่อ guitar_songs.tar.bz2 ไฟล์เหล่านี้อยู่ในไดเร็กทอรี Downloads

ไฟล์ tar สองไฟล์ในไดเร็กทอรีดาวน์โหลด

ลองแยกเพลงอูคูเลเล่:

 tar -xvzf ukulele_songs.tar.gz
โฆษณา

เมื่อแตกไฟล์แล้ว จะแสดงรายการในหน้าต่างเทอร์มินัล

การแยกไฟล์ทั้งหมดจากไฟล์ tar

ตัวเลือกบรรทัดคำสั่งที่เราใช้คือ:

  • -x : Extract ดึงไฟล์จากไฟล์ tar
  • -v : ละเอียด แสดงรายการไฟล์ขณะที่กำลังแตกไฟล์
  • -z : Gzip ใช้ gzip เพื่อขยายไฟล์ tar
  • -f : ไฟล์ ชื่อของไฟล์ tar ที่เราต้องการให้ tar ทำงานด้วย ตัวเลือกนี้ต้องตามด้วยชื่อของไฟล์ tar

ระบุไฟล์ในไดเร็กทอรีด้วย ls แล้วคุณจะเห็นว่ามีการสร้างไดเร็กทอรีชื่อ Ukulele Songs ไฟล์ที่แยกออกมาอยู่ในไดเร็กทอรีนั้น ไดเร็กทอรีนี้มาจากไหน? มีอยู่ในไฟล์ tar และถูกแตกพร้อมกับไฟล์

ไดเรกทอรีเพลงอูคูเลเล่ที่สร้างขึ้นในไดเรกทอรีดาวน์โหลด

ตอนนี้ขอแยกเพลงกีต้าร์ ในการดำเนินการนี้ เราจะใช้คำสั่งเดิมแทบทุกประการกับเมื่อก่อน แต่มีข้อแตกต่างที่สำคัญอย่างหนึ่ง คำต่อท้ายส่วนขยาย . .bz2 บอกเราว่าส่วนขยายนี้ถูกบีบอัดโดยใช้คำสั่ง bzip2 แทนที่จะใช้ตัวเลือก -z (gzip) เราจะใช้ตัวเลือก -j (bzip2)

 tar -xvjf guitar_songs.tar.bz2 

การแยกไฟล์ tar เพลงกีต้าร์ในโฟลเดอร์ดาวน์โหลด

อีกครั้ง ไฟล์จะแสดงรายการไปยังเทอร์มินัลเมื่อแตกไฟล์ เพื่อให้ชัดเจน ตัวเลือกบรรทัดคำสั่งที่เราใช้กับ tar สำหรับไฟล์ .tar.bz2 คือ:

  • -x : Extract ดึงไฟล์จากไฟล์ tar
  • -v : ละเอียด แสดงรายการไฟล์ขณะที่กำลังแตกไฟล์
  • -j : Bzip2 ใช้ bzip2 เพื่อคลายการบีบอัดไฟล์ tar
  • -f : ไฟล์ ชื่อของไฟล์ tar ที่เราต้องการให้ tar ทำงานด้วย

หากเราแสดงรายการไฟล์ในไดเร็กทอรี Download เราจะเห็นว่าไดเร็กทอรีอื่นที่เรียกว่า Guitar Songs ได้ถูกสร้างขึ้น

ไดเร็กทอรีเพลงกีต้าร์ที่สร้างในไดเร็กทอรีดาวน์โหลด

การเลือกตำแหน่งที่จะแตกไฟล์ไปยัง

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

 tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/
โฆษณา

เมื่อดูในไดเร็กทอรี Documents/Songs เราจะเห็นว่าไดเร็กทอรี Guitar Songs ถูกสร้างขึ้นแล้ว

ไดเร็กทอรีเพลงกีต้าร์ที่สร้างในไดเร็กทอรี Documents/Songs

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

 mkdir -p ~/Documents/Songs/Downloaded && tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/Downloaded/

อ็อพชัน -p (พาเรนต์) ทำให้ mkdir สร้างไดเร็กทอรีพาเรนต์ที่จำเป็น เพื่อให้มั่นใจว่าไดเร็กทอรีเป้าหมายจะถูกสร้างขึ้น

ดูไฟล์ Tar ก่อนแตกไฟล์

จนถึงตอนนี้ เราเพิ่งก้าวกระโดดด้วยศรัทธาและดึงไฟล์ที่มองไม่เห็นออกมา คุณอาจต้องการดูก่อนที่จะกระโดด คุณสามารถตรวจสอบเนื้อหาของไฟล์ tar ก่อนที่คุณจะแตกไฟล์โดยใช้ตัวเลือก -t (รายการ) โดยปกติแล้วจะสะดวกต่อการไพพ์เอาต์พุตโดยใช้คำสั่งที่ less

 tar -tf ukulele_songs.tar.gz | น้อย

ขอให้สังเกตว่าเราไม่จำเป็นต้องใช้ตัวเลือก -z เพื่อแสดงรายการไฟล์ เราจำเป็นต้องเพิ่มตัวเลือก -z เมื่อเรา แยก ไฟล์ออกจากไฟล์ .tar.gz เท่านั้น ในทำนองเดียวกัน เราไม่ต้องการตัวเลือก -j เพื่อแสดงรายการไฟล์ในไฟล์ tar.bz2

เนื้อหาของไฟล์ tar ที่ส่งผ่านน้อยกว่า

เมื่อเลื่อนดูผลลัพธ์ เราจะเห็นว่าทุกอย่างในไฟล์ tar ถูกเก็บไว้ในไดเร็กทอรีที่เรียกว่า Ukulele Songs และภายในไดเร็กทอรีนั้น จะมีไฟล์และไดเร็กทอรีอื่นๆ

มุมมองที่สองของเนื้อหาของไฟล์ tar ที่ไปป์ผ่านน้อยกว่า

โฆษณา

เราจะเห็นว่าไดเร็กทอรีเพลงของ Ukulele มีไดเร็กทอรีที่เรียกว่า Random Songs, Ramones และ Possibles

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

 tar -xvzf ukulele_songs.tar.gz "เพลงอูคูเลเล่/Ramones/" 

แยกโฟลเดอร์เดียวจากไฟล์ tar

ในการแตกไฟล์เดียว ให้ระบุพาธและชื่อไฟล์

 tar -xvzf ukulele_songs.tar.gz "เพลงอูคูเลเล่/023 - My Babe.odt" 

แตกไฟล์เดียวจากไฟล์ tar

คุณสามารถแตกไฟล์ที่เลือกได้โดยใช้สัญลักษณ์แทน โดยที่ * แทนสตริงของอักขระใดๆ และ ? แสดงถึงอักขระตัวเดียว การใช้ไวด์การ์ดต้องใช้ตัวเลือก --wildcards

 tar -xvz --wildcards -f ukulele_songs.tar.gz "เพลงอูคูเลเล่/ที่เป็นไปได้/B*" 

แยกเพลงจาก tar ด้วย wildcard

แตกไฟล์โดยไม่แตกไดเร็กทอรี

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

ถ้าเราระบุ --strip-components=1 ด้วยไฟล์ tar ตัวอย่างของเรา ไดเร็กทอรีบนสุดของ Ukulele Songs ภายในไฟล์ tar จะไม่ถูกสร้างขึ้นบนฮาร์ดไดรฟ์ ไฟล์และไดเร็กทอรีที่จะแตกไปยังไดเร็กทอรีนั้นจะถูกแตกในไดเร็กทอรีเป้าหมาย

 tar -xvzf ukulele_songs.tar.gz --แถบส่วนประกอบ=1 

แตกไฟล์จากไฟล์ tar ด้วย --strip-components=1

โฆษณา

มีการซ้อนไดเร็กทอรีเพียงสองระดับภายในไฟล์ tar ตัวอย่างของเรา ดังนั้นหากเราใช้ --strip-components=2 ไฟล์ทั้งหมดจะถูกแตกในไดเร็กทอรีเป้าหมาย และไม่มีการสร้างไดเร็กทอรีอื่น

 tar -xvzf ukulele_songs.tar.gz --แถบส่วนประกอบ=2 

แตกไฟล์จากไฟล์ tar ด้วย --strip-components=2

หากคุณดูที่หน้าคู่มือ Linux คุณจะเห็นว่า tar จะต้องเป็นตัวเลือกที่ดีสำหรับชื่อ "คำสั่งที่มีตัวเลือกบรรทัดคำสั่งมากที่สุด" โชคดีที่ช่วยให้เราแยกไฟล์จากไฟล์ .tar.gz และ tar.bz2 ด้วยการควบคุมที่ละเอียดในระดับดี เราต้องจำตัวเลือกเหล่านี้เพียงไม่กี่ตัวเท่านั้น

ที่เกี่ยวข้อง: แล็ปท็อป Linux ที่ดีที่สุดสำหรับนักพัฒนาและผู้ที่ชื่นชอบ