พบไฟล์ tar.gz ขนาดศูนย์ภายในไฟล์ tar.gz


0

ไดเรกทอรีปัจจุบันของฉันมีไฟล์เดียวเช่นนี้ -

$ls -l
-rw-r--r--    1 root     staff             8 May 28 09:10 pavan

ตอนนี้ฉันต้องการ tar และ gzip ไฟล์นี้เช่น

$tar -cvf - *  2>/dev/null |gzip -vf9 > pavan.tar.gz 2>/dev/null

(ฉันรู้ว่าฉันกำลังสร้างไฟล์ซิปในไดเรกทอรีเดียวกันกับไฟล์ต้นฉบับ)

เมื่อฉันรันคำสั่ง tar / gzip ข้างต้นประมาณ 20 ครั้งฉันจะสังเกตว่าไฟล์ tarred และ zipped สุดท้ายpavan.tar.gzมีpavan.tar.gzไฟล์ขนาด ZERO ฉันไม่แน่ใจว่าไฟล์นี้เป็นศูนย์ขนาดไหนที่มาจากที่เก็บถาวร

หมายเหตุ : ฉันไม่ได้รันคำสั่ง tar / gzip ในไฟล์ tar.gz ที่มีอยู่แล้ว ฉันมักจะตรวจสอบให้แน่ใจว่าไดเรกทอรีมีเพียงไฟล์เดียวก่อนที่จะเรียกใช้คำสั่งบน googling ตามที่อธิบายไว้ที่นี่ฉันสงสัยว่า tar.gz กำลังถูกสร้างขึ้นเป็นส่วนหนึ่งของไฟล์ที่ถูกเก็บถาวร แต่ในกรณีของฉันgzipเป็นหนึ่งในผู้ที่สร้างไฟล์สุดท้ายและตามเวลาที่gzipทำงานtarควรจะทำ tarring

สิ่งนี้เกิดขึ้นบน AIX แต่ฉันใช้แท็ก Linux ด้วยเพื่อดึงความสนใจมากขึ้นเนื่องจากฉันเดาว่าปัญหานี้เป็นแพลตฟอร์มที่ไม่ขึ้นกับใคร

คำตอบ:


1

คุณกำลังป้อนคำสั่ง "piped" ล่ามของคุณ (ทุบตีเป็นต้น) สร้างไพพ์และประมวลผลสองคำสั่ง (วางไข่ 2 กระบวนการ - tar & gzip) ในโพรซีเดอร์นี้ทุบตีส้อมหลายครั้งและไม่ได้กำหนดถ้าไฟล์เป้าหมายของคุณpavan.tar.gzถูกสร้างขึ้นก่อนหรือหลัง*การขยายในtarคำสั่ง


ขอบคุณสำหรับคำตอบ. เนื่องจาก gzip ควรทำงานบนเอาต์พุตของ tar ไม่ควร tar เรียกใช้งานก่อนหรือไม่ คุณช่วยชี้ให้ฉันเห็นเอกสารมาตรฐานที่บอกว่าในคำสั่งที่ไพพ์สามารถวางไข่ในวิธีการนำไปปฏิบัติได้หรือไม่?
Pavan Manjunath

@PavanM นี่doc "แต่ละคำสั่งในไปป์ไลน์จะถูกดำเนินการใน subshell ของตัวเอง ... " ดังนั้นเชลล์จึงหาหลาย ๆ ครั้ง (สองครั้งในกรณีนี้) และดำเนินการคำสั่งที่ระบุ (และขยายสิ่งที่จำเป็น) กระบวนการใหม่เหล่านี้ไม่ได้รับการปกป้องอย่างใดสำหรับลำดับของการดำเนินการ - พวกเขาเพียงแค่เชื่อมต่อโดยไปป์
palo

0

หากคุณมีไฟล์เดียวและคุณกังวลเพราะมันสามารถเปลี่ยนแปลงได้ในเวลาที่คุณสามารถใช้งานได้ง่าย

cat pavan | gzip -f9 > pavan.gz 

ความคิดเห็นเพิ่มเติม:

หากคุณทำงานกับbashคุณสามารถลองคัดค้านการเลือก ดังนั้นด้วย!(pavan.tar.gz)คุณจะเลือกไฟล์ทั้งหมด แต่pavan.tar.gz

 tar -zcf pavan.tar.gz !(pavan.tar.gz)  

ในที่สุดด้วย --ignore-command-error


-1

ฉันไม่เข้าใจว่าทำไมคุณถึงใช้ -v แล้วเปลี่ยนเส้นทางไปยัง dev / null? ลบ -v และ dev / null เช่น:

tar -cf - * | gzip -f9> pavan.tar.gz

คุณจะไม่เห็นอะไรเลยบนหน้าจอ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.