วิธีการ 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
, และzipsplit
zipinfo
เราตรวจสอบลินุกซ์บางรุ่นเพื่อดูว่ารวมยูทิลิตี้เหล่านี้ในการติดตั้งมาตรฐาน ยูทิลิตี้ทั้งหมดมีอยู่ใน 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