tar: วิธีการสร้างไฟล์ tar ที่มีไดเรกทอรีชั้นนำโดยไม่มี w / o 'cd'ing ถึง parent dir


23

ว่าฉันมีไดเรกทอรีของไฟล์ที่

/home/user1/dir1

และฉันต้องการสร้าง tar ที่มีเฉพาะ "dir1" เป็นไดเรกทอรีนำ:

/dir1/file1
/dir1/file2

ฉันรู้ว่าฉันสามารถ cd แรกไปที่ไดเรกทอรี

cd /home/user1/
tar czvf dir1.tar.gz dir1

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

ฉันรู้ว่าฉันสามารถสร้างไฟล์ tar ด้วยพา ธ สัมบูรณ์ภายในและใช้งานได้เสมอ

--strip-components 

เมื่อแตกออก แต่บางครั้งชื่อพา ธ พิเศษเป็นข้อมูลส่วนตัวเพิ่มเติมที่คุณไม่ต้องการกระจายพร้อมไฟล์ tar ของคุณ

ขอบคุณ!

คำตอบ:


24

ไดเร็กทอรีการเปลี่ยนแปลง tar -C

tar -C /home/user1/ -cvzf dir1.tar.gz dir1

btw, สะดวกในการติดตามการเปลี่ยนไดเรกทอรี ... ใช้ pushd และ popd

pushd .
cd /home/user1
tar cvfz dir1.tar.gz
popd

1
ขอบคุณ ฉันไม่ทราบว่าต้องใช้ตัวเลือก "-C" ก่อนตัวเลือกอื่น ๆ ... ฉันลองใช้ "tar -cvzf dir1.tar.gz dir1 -C / home / user1 /" ก่อนหน้านี้ แต่ใช้งานไม่ได้
Yan

1
ไม่ทำงาน: tar: dir: ไม่สามารถ stat: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว (สมมติว่า dir1 อยู่ภายใต้ / home / user1 /)
tribbloid

21

ด้วย gnu tar คุณสามารถสร้างไฟล์เก็บถาวรด้วยไดเรกทอรีฐานที่แตกต่างจากของจริงด้วย:

tar -c --transform 's,^\.,mybasedir,' .

เพียงแค่ปรับการแสดงออกที่ตรงกับความต้องการของคุณ


5

ตกลงฉันก็พบว่า

tar -czvf file1.tar.gz /home/user1/dir1/../dir1

ยังทำงานในแบบที่ฉันต้องการ


แม้ว่า wildcard เช่น "*" ก็ไม่ทำงาน
Curtis Yallop

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