บีบอัดโฟลเดอร์ (tar) โดยไม่มีไดเรกทอรีที่มีอยู่ในชื่อโฟลเดอร์


21

ฉันพยายามบีบอัดโฟลเดอร์ด้วยtarคำสั่ง

เมื่อฉันพยายามบีบอัดมันก็ใช้ได้ดี ปัญหาเกิดขึ้นกับชื่อไฟล์

เส้นทางที่มา:

/data/file/

เส้นทางปลายทาง:

/data/repo/temp/file.tar.gz

tar zcvf $srcpath $destinationpath

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


1
ไวยากรณ์ tar คือ: tar zcvf file.tar.gz /path/dir/to/compressบางทีคุณควรเปลี่ยนคำสั่งของคุณในtar zcvf $destinationpath $srcpathแต่ก็ไม่ชัดเจนสำหรับฉันสิ่งที่คุณต้องการ คุณช่วยอธิบายคำถามของคุณด้วยตัวอย่างของสิ่งที่คุณคาดหวังจากคำสั่ง tar ได้หรือไม่
Lety

ขอบคุณสำหรับความคิดเห็นปัญหาของฉันเป็นดังต่อไปนี้ความคิดเห็นที่คุณแบ่งปันที่นี่ "tar zcvf file.tar.gz / path / dir / to / compres" นี้ควรจะทำงานได้ดีถ้าเราอยู่ในไดเรกทอรีเดียวกัน "ไฟล์" กรณีของฉันคือ เรากำลังทำงานจากไดเรกทอรีที่แตกต่างกันเช่น: / home / testuser1 / file: file เป็นโฟลเดอร์ที่ฉันต้องการบีบอัดและกำลัง excuting คำสั่งจากรากไม่ได้อยู่ในบ้านดังนั้นเราอาจต้องให้เส้นทางทั้งหมดไปยังโฟลเดอร์ในขณะที่ขยาย กำลังได้รับไดเรกทอรีย่อยทั้งหมดจาก / home / TestUser1 / ไฟล์แทนของโฟลเดอร์แฟ้ม
Seetha รามัน

อาจเป็นตัวพิมพ์ผิด แต่ในตัวอย่างของคุณคุณผสมแหล่งที่มาและปลายทาง
Jacob Vlijm

คำตอบ:


49

วิธีที่ง่ายที่สุดที่จะทำคือไปที่ไดเร็กตอรี่ก่อน:

cd /path/to/containing/folder && tar -zcvf tarfile.tar.gz foldername_tocompress

เพื่อให้ไดเรกทอรีของโฟลเดอร์ (บรรจุ) กลายเป็นรูทไดเร็กทอรีของไฟล์บีบอัดของคุณ

ขั้นสูงอีกเล็กน้อยใช้ตัวเลือก -C:

tar -zcvf tarfile.tar.gz -C /path/to/foldername_tocompress .

สิ่งนี้จะสร้างtar.gzไฟล์ในไดเรกทอรีปัจจุบัน (ที่ใช้งานได้) ซึ่งมีไฟล์ / โฟลเดอร์ทั้งหมดอยู่ภายในfoldername_tocompress(คำนึงถึงจุดโดยบอกว่าควรรวมไฟล์ / โฟลเดอร์ทั้งหมดไว้ด้วย)


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