วิธีการ Zip หรือ Unzip ไฟล์จาก Linux Terminal

ไฟล์ ZIP เป็นไฟล์เก็บถาวรสากลที่ใช้กันทั่วไปใน Windows, macOS และแม้แต่ระบบ Linux คุณสามารถสร้างไฟล์ zip หรือคลายซิปจากไฟล์เดียวด้วยคำสั่งเทอร์มินัลทั่วไปของ Linux

รูปแบบไฟล์ ZIP บีบอัด

ด้วยความโดดเด่นของรูปแบบ ZIP ในขอบเขต Windows ไฟล์ ZIP น่าจะเป็นรูปแบบไฟล์บีบอัดที่พบมากที่สุดในโลก

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

ที่เกี่ยวข้อง: วิธีการแตกไฟล์จากไฟล์. tar.gz หรือ. tar.bz2 บน Linux

zip, unzip และยูทิลิตี้อื่น ๆ

คุณอาจทราบแล้วว่า Linux และ Unix เหมือนระบบปฏิบัติการเช่น MacOS มีเครื่องมือที่จะช่วยให้คุณสร้างไฟล์ ZIP และไฟล์สารสกัดจากพวกเขาเรียกว่าและzip unzipแต่มีคนในครอบครัวของสาธารณูปโภคที่เกี่ยวข้องเช่นzipcloak, zipdetails, และzipsplitzipinfo

เราตรวจสอบลินุกซ์บางรุ่นเพื่อดูว่ารวมยูทิลิตี้เหล่านี้ในการติดตั้งมาตรฐาน ยูทิลิตี้ทั้งหมดมีอยู่ใน Ubuntu 19.04, 18.10 และ 18.04 พวกเขาอยู่ใน Manjaro 18.04 ด้วย รวมถึง Fedora 29 zipและunzipแต่ไม่มียูทิลิตี้อื่น ๆ และนั่นก็เป็นกรณีของ CentOS

ในการติดตั้งองค์ประกอบที่ขาดหายไปบน Fedora 29 ให้ใช้คำสั่งต่อไปนี้:

sudo dnf ติดตั้ง perl-IO-Compress

ในการติดตั้งองค์ประกอบที่ขาดหายไปบน CentOS 7 ให้ใช้คำสั่งต่อไปนี้:

sudo yum ติดตั้ง perl-IO-Compress

หากยูทิลิตี้ zip ใด ๆ หายไปจากการแจกจ่าย Linux ที่ไม่ได้กล่าวถึงข้างต้นให้ใช้เครื่องมือจัดการแพ็คเกจของการแจกจ่าย Linux นั้นเพื่อติดตั้งแพ็คเกจที่ต้องการ

วิธีสร้างไฟล์ ZIP ด้วยคำสั่ง zip

ในการสร้างไฟล์ ZIP คุณต้องบอกzipชื่อของไฟล์เก็บถาวรและไฟล์ที่จะรวมไว้ในนั้น คุณไม่จำเป็นต้องเพิ่มนามสกุล“ .zip” ในชื่อที่เก็บถาวร แต่จะไม่เป็นอันตรายหากคุณทำเช่นนั้น

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

zip source_code * .c * .h

แต่ละไฟล์จะแสดงรายการตามที่เพิ่มเข้าไป ชื่อของไฟล์และจำนวนการบีบอัดที่ทำได้ในไฟล์นั้นจะปรากฏขึ้น

ถ้าคุณมองไปที่ไฟล์ ZIP ใหม่คุณจะเห็นว่า“ซิป” zipนามสกุลไฟล์ได้รับการเพิ่มโดยอัตโนมัติ

ls -l source_code.zip

หากคุณไม่ต้องการเห็นผลลัพธ์จากzipการสร้างไฟล์ ZIP ให้ใช้-qตัวเลือก (เงียบ)

zip -q source_code * .c * .h

รวมถึงไดเรกทอรีในไฟล์ ZIP

หากต้องการรวมไดเร็กทอรีย่อยในไฟล์ ZIP ให้ใช้-rอ็อพชัน (เรียกซ้ำ) และรวมชื่อไดเร็กทอรีย่อยในบรรทัดคำสั่ง ในการสร้างไฟล์ ZIP เหมือนเดิมและรวมไดเร็กทอรีย่อยที่เก็บถาวรให้ใช้คำสั่งนี้

zip -r -q source_code archive / * .c * .h

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

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

zip -r -q source_code ทำงาน /

การตั้งค่าระดับการบีบอัด

คุณสามารถกำหนดปริมาณการบีบอัดที่ใช้กับไฟล์ได้เมื่อเพิ่มลงในไฟล์ ZIP ช่วงอยู่ระหว่าง 0 ถึง 9 โดย 0 จะไม่มีการบีบอัดเลย การบีบอัดที่สูงขึ้นการสร้างไฟล์ ZIP จะใช้เวลานานขึ้น สำหรับไฟล์ ZIP ที่มีขนาดพอประมาณความแตกต่างของเวลาไม่ใช่บทลงโทษที่สำคัญ แต่สำหรับไฟล์ ZIP ที่มีขนาดพอประมาณการบีบอัดเริ่มต้น (ระดับ 6) ก็น่าจะดีพออยู่แล้ว

หากต้องการzipใช้ระดับการบีบอัดที่เฉพาะเจาะจงให้ส่งตัวเลขเป็นตัวเลือกในบรรทัดคำสั่งโดยมี "-" ดังนี้:

zip -0 -r -q source_code ทำงาน /

ระดับการบีบอัดเริ่มต้นคือ 6 ไม่จำเป็นต้องระบุ-6ตัวเลือก แต่จะไม่เป็นอันตรายหากคุณทำ

zip -r -q source_code ทำงาน /

ระดับการบีบอัดสูงสุดคือระดับ 9

zip -9 -r -q source_code ทำงาน /

ด้วยการเลือกไฟล์และไดเร็กทอรีที่ถูกเก็บถาวรที่นี่ความแตกต่างระหว่างไม่มีการบีบอัด (ระดับ 0) และการบีบอัดเริ่มต้น (ระดับ 6) คือ 400K ความแตกต่างระหว่างการบีบอัดเริ่มต้นและการบีบอัดระดับสูงสุด (ระดับ 9) คือ 4K เท่านั้น

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

การเพิ่มรหัสผ่านไปยังไฟล์ ZIP

การเพิ่มรหัสผ่านไปยังไฟล์ ZIP นั้นทำได้ง่าย ใช้-eตัวเลือก (เข้ารหัส) จากนั้นคุณจะได้รับแจ้งให้ป้อนรหัสผ่านของคุณและป้อนรหัสผ่านอีกครั้งเพื่อยืนยัน

zip -e -r -q source_code ทำงาน /

วิธีคลายซิปไฟล์ ZIP ด้วยคำสั่งคลายซิป

ในการแตกไฟล์จากไฟล์ ZIP ให้ใช้คำสั่ง unzip และระบุชื่อของไฟล์ ZIP โปรดทราบว่าคุณทำจำเป็นต้องให้ขยาย“ซิป”

เปิดเครื่องรูด source_code.zip

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

ไฟล์ ZIP ไม่มีรายละเอียดการเป็นเจ้าของไฟล์ ไฟล์ทั้งหมดที่แตกไฟล์มีเจ้าของตั้งค่าเป็นผู้ใช้ที่กำลังแตกไฟล์

เช่นเดียวกับzip, unzip มี-q(เงียบ) ตัวเลือกเพื่อให้คุณไม่จำเป็นต้องเห็นไฟล์ชื่อไฟล์จะถูกดึง

unzip -q source_code.zip

การแตกไฟล์ไปยังไดเร็กทอรีเป้าหมาย

ในการแตกไฟล์ในไดเร็กทอรีเฉพาะให้ใช้-dอ็อพชัน (ไดเร็กทอรี) และระบุพา ธ ไปยังไดเร็กทอรีที่คุณต้องการให้แตกไฟล์เก็บถาวร

unzip -q source_code.zip -d ./development

แยกไฟล์ ZIP ที่ป้องกันด้วยรหัสผ่าน

หากไฟล์ ZIP ถูกสร้างด้วยรหัสผ่านระบบunzipจะถามรหัสผ่านจากคุณ หากคุณไม่ได้ระบุรหัสผ่านที่ถูกต้อง  unzipจะไม่แตกไฟล์

unzip -q source_code.zip

หากคุณไม่สนใจว่าผู้อื่นจะมองเห็นรหัสผ่านของคุณหรือไม่เกี่ยวกับรหัสผ่านนั้นจะถูกเก็บไว้ในประวัติคำสั่งของคุณคุณสามารถระบุรหัสผ่านในบรรทัดคำสั่งด้วย-Pตัวเลือก (รหัสผ่าน) (คุณต้องใช้ตัวพิมพ์ใหญ่ "P. ")

เปิดเครื่องรูด -P Fifty.treacle.cutlass -q source_code.zip

การยกเว้นไฟล์

หากคุณไม่ต้องการแตกไฟล์หรือกลุ่มไฟล์ใดไฟล์หนึ่งให้ใช้-xตัวเลือก (ไม่รวม) ในตัวอย่างนี้เราต้องการแยกไฟล์ทั้งหมดออกจากไฟล์ที่ลงท้ายด้วยนามสกุล“ .h”

unzip -q source_code.zip -x * .h

การเขียนทับไฟล์

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

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

นอกเหนือจากการrตอบกลับ (เปลี่ยนชื่อ) แล้วการตอบสนองเหล่านี้ยังคำนึงถึงตัวพิมพ์เล็กและใหญ่

  • y:ใช่เขียนทับไฟล์นี้
  • n:ไม่อย่าเขียนทับไฟล์นี้
  • ตอบ:ทั้งหมดเขียนทับไฟล์ทั้งหมด
  • N:ไม่มีเขียนทับไฟล์ใด ๆ
  • r:เปลี่ยนชื่อแตกไฟล์นี้ แต่ตั้งชื่อใหม่ คุณจะได้รับแจ้งให้ตั้งชื่อใหม่

หากต้องการบังคับunzipให้เขียนทับไฟล์ที่มีอยู่ให้ใช้-oตัวเลือก (เขียนทับ)

เปิดเครื่องรูด -o -q source_code.zip

วิธีที่มีประสิทธิภาพที่สุดในการแทนที่ไฟล์ที่หายไปคือการunzipแตกไฟล์ใด ๆ ในไฟล์เก็บถาวรที่ไม่ได้อยู่ในไดเร็กทอรีเป้าหมายเท่านั้น ในการดำเนินการนี้ให้ใช้-nตัวเลือก (ไม่เขียนทับ)

เปิดเครื่องรูด -n source_code.zip

มองเข้าไปในไฟล์ ZIP

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

unzip -l source_code.zip | น้อยกว่า

ผลลัพธ์จะแสดงไดเร็กทอรีและไฟล์ภายในไฟล์ ZIP ความยาวและเวลาและวันที่ที่เพิ่มลงในไฟล์เก็บถาวร กด“Q” lessที่จะลาออกจาก

มีวิธีอื่น ๆ ในการดูไฟล์ ZIP ซึ่งให้ข้อมูลประเภทต่างๆดังที่เราเห็น

เพิ่มรหัสผ่านด้วยคำสั่ง zipcloak

หากคุณสร้างไฟล์ ZIP แต่ลืมใส่รหัสผ่านคุณจะทำอย่างไร? คุณสามารถเพิ่มรหัสผ่านไปยังไฟล์ ZIP ได้อย่างรวดเร็วโดยใช้zipcloakคำสั่ง ส่งชื่อของไฟล์ ZIP ในบรรทัดคำสั่ง คุณจะได้รับแจ้งให้ใส่รหัสผ่าน คุณต้องยืนยันรหัสผ่านโดยป้อนครั้งที่สอง

zipcloak source_code.zip

ดูรายละเอียดไฟล์ด้วยคำสั่ง zipdetails

zipdetailsคำสั่งจะแสดงจำนวนมากของข้อมูลเกี่ยวกับไฟล์ ZIP lessวิธีเดียวที่เหมาะสมที่จะจัดการกับปริมาณของการส่งออกคำสั่งนี้สามารถให้เป็นท่อมันผ่าน

zipdetails source_code.zip | น้อยกว่า

โปรดทราบว่าข้อมูลจะรวมถึงชื่อไฟล์แม้ว่าไฟล์ ZIP จะได้รับการป้องกันด้วยรหัสผ่านก็ตาม ข้อมูลประเภทนี้ถูกเก็บไว้ในไฟล์ ZIP เป็นข้อมูลเมตาและไม่ได้เป็นส่วนหนึ่งของข้อมูลที่เข้ารหัส

ค้นหาภายในไฟล์ด้วยคำสั่ง zipgrep

zipgrepคำสั่งช่วยให้คุณค้นหาภายในไฟล์ในไฟล์ ZIP ในตัวอย่างต่อไปนี้เราต้องการทราบว่าไฟล์ใดในไฟล์ ZIP ที่มีข้อความ“ keyval.h” อยู่

zipgrep keyval.h source_code.zip

เราจะเห็นว่าไฟล์slang.cและgetval.cมีสตริง "keyval.h" นอกจากนี้เรายังสามารถเห็นได้ว่ามีสำเนาของไฟล์เหล่านี้สองชุดในไดเรกทอรีที่แตกต่างกันในไฟล์ ZIP

ดูข้อมูลด้วยคำสั่ง zipinfo

zipinfoคำสั่งช่วยให้คุณ ๆ วิธีที่จะดูในไฟล์ ZIP อื่น lessเมื่อก่อนเราท่อส่งออกผ่าน

zipinfo source_code.zip | น้อยกว่า

จากซ้ายไปขวาผลลัพธ์จะแสดง:

  • สิทธิ์ของไฟล์
  • เวอร์ชันของเครื่องมือที่ใช้สร้างไฟล์ ZIP
  • ขนาดไฟล์ต้นฉบับ
  • ตัวอธิบายไฟล์ (อธิบายด้านล่าง)
  • วิธีการบีบอัด (เงินฝืดในกรณีนี้)
  • ข้อมูลและการประทับเวลา
  • ชื่อของไฟล์และไดเร็กทอรีใด ๆ

ตัวอธิบายไฟล์ประกอบด้วยอักขระสองตัว อักขระตัวแรกจะเป็น "t" หรือ "b" เพื่อระบุข้อความหรือไฟล์ไบนารี หากเป็นอักษรตัวใหญ่ไฟล์จะถูกเข้ารหัส อักขระที่สองอาจเป็นหนึ่งในสี่อักขระ อักขระนี้แสดงถึงประเภทของข้อมูลเมตาที่รวมอยู่สำหรับไฟล์นี้: ไม่มีส่วนหัวภายในแบบขยาย "ช่องเพิ่มเติม" หรือทั้งสองอย่าง

  • -:หากไม่มีอยู่อักขระจะเป็นยัติภังค์
  • l:หากมีส่วนหัวในเครื่องที่ขยายออก แต่ไม่มีช่องเพิ่มเติม
  • x:หากไม่มีส่วนหัวในเครื่องที่ขยายออก แต่มีฟิลด์พิเศษ
  • X:หากมีการขยายส่วนหัวในเครื่องและมีฟิลด์เพิ่มเติม

แยกไฟล์ด้วยคำสั่ง zipsplit

หากคุณต้องการส่งไฟล์ ZIP ไปให้คนอื่น แต่มีข้อ จำกัด ด้านขนาดหรือปัญหาในการส่งไฟล์คุณสามารถใช้zipsplitคำสั่งเพื่อแยกไฟล์ ZIP ต้นฉบับออกเป็นชุดไฟล์ ZIP ที่เล็กกว่าได้

-n(ขนาด) ตัวเลือกที่ช่วยให้คุณสามารถกำหนดขนาดสูงสุดสำหรับแต่ละไฟล์ ZIP ใหม่ ในตัวอย่างนี้เรากำลังแยกsource_code.zipไฟล์ เราไม่ต้องการให้ไฟล์ ZIP ใหม่มีขนาดใหญ่กว่า 100 KB (102400 ไบต์)

zipsplit -n 102400 source_code.zip

ขนาดที่คุณเลือกต้องไม่เล็กกว่าขนาดของไฟล์ใด ๆ ในไฟล์ ZIP

การใช้คำสั่งเหล่านี้คุณสามารถสร้างไฟล์ ZIP ของคุณเองคลายซิปไฟล์ ZIP ที่คุณได้รับและดำเนินการอื่น ๆ ได้โดยไม่ต้องออกจากเทอร์มินัล Linux