วิธีแยกไฟล์จากไฟล์. tar.gz หรือ. tar.bz2 บน Linux
ไฟล์ Tar เป็นไฟล์เก็บถาวรที่บีบอัด คุณจะพบบ่อยในขณะที่ใช้การแจกจ่าย Linux เช่น Ubuntu หรือแม้กระทั่งในขณะที่ใช้เทอร์มินัลบน macOS ต่อไปนี้เป็นวิธีการแยกหรือยกเลิกการตั้งค่าเนื้อหาของไฟล์ tar หรือที่เรียกว่า tarball
. tar.gz และ. tar.bz2 หมายถึงอะไร
ไฟล์ที่มี a .tar.gz
หรือ.tar.bz2
นามสกุลคือไฟล์บีบอัดที่เก็บถาวร ไฟล์ที่มี.tar
นามสกุลเพียงอย่างเดียวจะไม่มีการบีบอัด แต่จะหายากมาก
.tar
ส่วนหนึ่งของนามสกุลไฟล์ย่อมาจากเสื้อลิงเท่ลูกกระเทียมและเป็นเหตุผลที่ว่าทั้งสองชนิดของแฟ้มเหล่านี้จะเรียกว่าไฟล์ tar ไฟล์ Tar จะย้อนกลับไปในปี 1979 เมื่อtar
คำสั่งถูกสร้างขึ้นเพื่อให้ผู้ดูแลระบบสามารถเก็บไฟล์ลงในเทปได้ สี่สิบปีต่อมาเรายังคงใช้tar
คำสั่งเพื่อแตกไฟล์ tar ไปยังฮาร์ดไดรฟ์ของเรา บางคนอาจยังคงใช้tar
เทปอยู่
.gz
หรือ.bz2
ต่อท้ายนามสกุลบ่งชี้ว่าเก็บได้รับการบีบอัดโดยใช้อย่างใดอย่างหนึ่งgzip
หรือbzip2
วิธีการบีบอัด tar
คำสั่งจะทำงานอย่างมีความสุขกับทั้งสองประเภทของไฟล์เพื่อให้มันไม่สำคัญซึ่งวิธีการบีบอัดได้ถูกใช้และมันควรจะสามารถใช้ได้ทุกที่ที่คุณมีเปลือกทุบตี คุณต้องใช้tar
ตัวเลือกบรรทัดคำสั่งที่เหมาะสม
การแตกไฟล์จากไฟล์ Tar
สมมติว่าคุณดาวน์โหลดแผ่นเพลงสองไฟล์ ไฟล์เดียวจะเรียกว่าukulele_songs.tar.gz
ที่อื่น ๆ guitar_songs.tar.bz2
ที่เรียกว่า ไฟล์เหล่านี้อยู่ในไดเร็กทอรีดาวน์โหลด
มาแยกเพลงอูคูเลเล่:
tar -xvzf ukulele_songs.tar.gz
เมื่อแตกไฟล์แล้วไฟล์เหล่านั้นจะแสดงรายการในหน้าต่างเทอร์มินัล
ตัวเลือกบรรทัดคำสั่งที่เราใช้คือ:
- -x : แตกไฟล์ดึงไฟล์จากไฟล์ tar
- -v : Verbose แสดงรายการไฟล์ที่กำลังแตกไฟล์
- -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.bz2
ไฟล์คือ:
- -x : แตกไฟล์ดึงไฟล์จากไฟล์ tar
- -v : Verbose แสดงรายการไฟล์ที่กำลังแตกไฟล์
- -j : Bzip2 ใช้ bzip2 เพื่อขยายไฟล์ tar
- -f : ไฟล์ชื่อของไฟล์ tar ที่เราต้องการให้ tar ทำงานด้วย
หากเราแสดงรายการไฟล์ในไดเร็กทอรีดาวน์โหลดเราจะเห็นไดเร็กทอรีอื่นที่เรียกว่า Guitar Songs ได้ถูกสร้างขึ้น
การเลือกว่าจะแยกไฟล์ไปที่ใด
หากเราต้องการแตกไฟล์ไปยังตำแหน่งอื่นที่ไม่ใช่ไดเร็กทอรีปัจจุบันเราสามารถระบุไดเร็กทอรีเป้าหมายโดยใช้-C
อ็อพชัน (ไดเร็กทอรีที่ระบุ)
tar -xvjf guitar_songs.tar.gz -C ~ / Documents / Songs /
ดูในไดเร็กทอรี Documents / Songs ของเราเราจะเห็นไดเร็กทอรี Guitar 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 ถูกเก็บไว้ในไดเร็กทอรีชื่อ Ukulele Songs และภายในไดเร็กทอรีนั้นมีไฟล์และไดเร็กทอรีอื่น
เราจะเห็นได้ว่าไดเร็กทอรี Ukulele Songs มีไดเร็กทอรีที่เรียกว่า Random Songs, Ramones และ Possibles
ในการแตกไฟล์ทั้งหมดจากไดเร็กทอรีภายในไฟล์ tar ให้ใช้คำสั่งต่อไปนี้ โปรดสังเกตว่าเส้นทางถูกห่อด้วยเครื่องหมายคำพูดเนื่องจากมีช่องว่างในเส้นทาง
tar -xvzf ukulele_songs.tar.gz "เพลงอูคูเลเล่ / Ramones /"
ในการแตกไฟล์เดียวให้ระบุพา ธ และชื่อของไฟล์
tar -xvzf ukulele_songs.tar.gz "เพลงอูคูเลเล่ / 023 - My Babe.odt"
คุณสามารถแยกไฟล์ที่เลือกได้โดยใช้สัญลักษณ์แทนซึ่ง*
แสดงถึงสตริงของอักขระ?
ใด ๆและแสดงถึงอักขระเดี่ยวใด ๆ การใช้สัญลักษณ์แทนจำเป็นต้องใช้--wildcards
ตัวเลือก
tar -xvz --wildcards -f ukulele_songs.tar.gz "เพลงอูคูเลเล่ / Possibles / B *"
การแตกไฟล์โดยไม่ต้องแตกไดเร็กทอรี
หากคุณไม่ต้องการให้โครงสร้างไดเร็กทอรีในไฟล์ tar ถูกสร้างขึ้นใหม่บนฮาร์ดไดรฟ์ของคุณให้ใช้--strip-components
ตัวเลือก --strip-components
ตัวเลือกที่ต้องใช้พารามิเตอร์ตัวเลข ตัวเลขแสดงจำนวนระดับของไดเร็กทอรีที่จะละเว้น ไฟล์จากไดเร็กทอรีที่ถูกละเว้นจะยังคงถูกแยกออก แต่โครงสร้างไดเร็กทอรีจะไม่ถูกจำลองแบบบนฮาร์ดไดรฟ์ของคุณ
หากเราระบุ--strip-components=1
ด้วยไฟล์ tar ตัวอย่างของเราไดเร็กทอรี Ukulele Songs ที่อยู่บนสุดภายในไฟล์ tar จะไม่ถูกสร้างขึ้นบนฮาร์ดไดรฟ์ ไฟล์และไดเร็กทอรีที่จะถูกแตกออกไปยังไดเร็กทอรีนั้นจะถูกแตกออกในไดเร็กทอรีเป้าหมาย
tar -xvzf ukulele_songs.tar.gz --strip-components = 1
มีไดเร็กทอรีเพียงสองระดับที่ซ้อนกันภายในไฟล์ tar ตัวอย่างของเรา ดังนั้นหากเราใช้--strip-components=2
ไฟล์ทั้งหมดจะถูกแตกในไดเร็กทอรีเป้าหมายและไม่มีการสร้างไดเร็กทอรีอื่น ๆ
tar -xvzf ukulele_songs.tar.gz --strip-components = 2
หากคุณดูที่หน้า man Linux คุณจะเห็นว่าtar
ต้องเป็นตัวเลือกที่ดีสำหรับชื่อ "command ที่มีตัวเลือกบรรทัดคำสั่งมากที่สุด" โชคดีที่เพื่อให้เราสามารถแยกไฟล์.tar.gz
และtar.bz2
ไฟล์ที่มีการควบคุมระดับละเอียดที่ดีเราจำเป็นต้องจำตัวเลือกเหล่านี้เพียงไม่กี่ตัวเท่านั้น