tar - ลบองค์ประกอบไดเรกทอรีชั้นนำในการสกัด


104

คุณจะแยกเฉพาะ dir เป้าหมายและไม่ใช่ต้นไม้ dir ที่สมบูรณ์ได้อย่างไร

อัด

tar cf /var/www/site.tar /var/www_bak/site

สารสกัด

tar xf /var/www/site.tar -C /tmp

สิ่งนี้จะผลิต:

/tmp/var/www/site

เป็นไปได้อย่างไรที่จะหลีกเลี่ยงต้นไม้ dir ทั้งหมดที่จะสร้างเมื่อแตกไฟล์?

สิ่งที่ฉันต้องการให้แยกไปที่:

/tmp/site

คำตอบ:


34

ทำไมไม่ใช้-Cตัวเลือกเมื่อสร้าง:

$ tar cf /var/www/site.tar -C /var/www_bak/ site

1
TMTOWTDI นั่นจะใช้ได้เช่นกันโดยใช้-Cตัวเลือกเดียวกัน;)
MikeyB

12
เขาต้องการที่จะตัดเส้นทางจากส่วนประกอบชั้นนำบางส่วนไม่เปลี่ยนไดเรกทอรีผลลัพธ์ ดูคำตอบที่ถูกต้องด้านล่าง
aymericbeaumet

4
เราไม่สามารถใช้งานได้เมื่อมีคนอื่นเตรียมการเก็บถาวร

เพราะ `` `_t = คำนำหน้า - $ (วันที่ +% Y% m% d%); tar -cjf ".backups / $ _ t.tar.bz2" --transform = "s # ^ (\ ./)? # $ _ t / # x;" - ไฟล์ ... ; tar -df ".backups / $ _ t.tar.bz2" --strip-components = 1 `` `
AnrDaemon

258

คุณต้องการใช้--strip-components=NUMBERตัวเลือกของtar:

 --strip-components=NUMBER
       strip NUMBER leading components from file names on extraction

คำสั่งของคุณจะเป็น:

tar xfz /var/www/site.gz --strip-components=2 -C /tmp

19
คำตอบนี้ดีกว่าเพราะคุณไม่ต้องคิดก่อนการสร้างน้ำมันดิน คุณสามารถใช้กับไฟล์ tar ที่สร้างขึ้นแล้ว ขอบคุณ @MikeyB!
Fabien Quatravaux

4
ฉันยินดีที่จะรายงานผลงานนี้ทั้งใน GNU tar และ BSD tar
นาธานออสมัน

4
และเพราะคุณอาจไม่ใช่ผู้สร้าง tar ... (หรือถ้าคุณทำมันด้วยเครื่องมืออื่นและเครื่องมือนั้นทำสิ่งที่โง่ ... )
xenoterracide

คุณอาจจะยังคงหายไป--strip-componentsธงหากคุณกำลังใช้การดำเนินการ busybox ฝังตัวของtarแต่
sylvainulg

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