ฉันต้องการที่จะ tar ไดเรกทอรี X ไม่รวมถึงผู้ปกครอง


9
tar cvf /var/lib/backup/sample.tar /home/user/.project

อย่างไรก็ตามเมื่อฉันแยกฉันก็รับพ่อแม่ของมันเช่นกัน

/backup/
  - /home/
     - /user/
        - .project/

คำสั่ง tar นี้ทำงานได้เนื่องจากไม่ได้รวมสิ่งใดไว้ในรายการในพาเรนต์ ( userตัวอย่างเช่นโฟลเดอร์อื่น ๆ)

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

คำตอบ:


17

คุณสามารถใช้-Cตัวเลือกเพื่อเปลี่ยนเป็น/home/userไดเรกทอรีก่อนที่จะแสดงหรือใช้--strip-components 2ในการแยก

tar cvfC /var/lib/backup/sample.tar /home/user .project
#                              Note the space ^
tar cvf /var/lib/backup/sample.tar /home/user/.project
tar Cxf /backup /var/lib/backup/sample.tar --strip-components 2

1
+1 เจ๋ง .. ฉันเพิ่งพบ-Cสวิตช์เมื่อฉันดูหน้าคนแต่ไม่สามารถเข้าใจได้ ... ฟังฉันมากขึ้นเหมือนกับว่ามันจะถูกใช้ในช่วงที่ไม่ได้ใช้ เรียนรู้สิ่งใหม่ ๆ
Levon

@ เควินขอบคุณ ตัวเลือก C ทำงานได้อย่างไร้ที่ติ ขอบคุณ!
007

2
ฉันไม่สามารถทำงานได้เช่นนี้ จากการอ่านgnu.org/software/tar/manual/tar.html#SEC118ฉันประสบความสำเร็จในรูปแบบต่อไปนี้: tar cvf /var/lib/backup/sample.tar -C / home / user .project
Aivar

2

ฉันคิดว่าถ้าคุณcdไปยังไดเรกทอรีระดับบนสุดที่คุณต้องการสร้างtarไฟล์คุณไม่ควรมีปัญหานี้ กล่าวคือ

cdไปยังuserและtarขึ้น.project.. คุณสามารถระบุปลายทางสำหรับไฟล์ tar ใน/var/... เหมือนก่อน

หรือมีเหตุผลที่คุณไม่ต้องการ / ไม่สามารถcdที่จะuser?


ใช่. นั่นจะเป็นทางออกหนึ่ง ขอบคุณ แต่ฉันหวังว่าจะมีวิธีที่ดีกว่า ฉันต้องการจัดการกับพันธมิตรที่เขียนโปรแกรมนี้และฉันไม่ต้องการที่จะออกos.chdir(base_dir)รหัสของฉันตลอดเวลา :) ดังนั้นมันจะดีถ้ามีทางออกจากนี้ ขอบคุณ
User007

@ User007 อ่า .. ฉันเข้าใจแล้ว คุณอาจต้องการอัปเดตคำถามของคุณเพื่อรวมข้อกำหนดนั้นไว้ด้วย รหัสผู้ใช้ที่ดีโดยวิธี :)
เฮล์มส

ขอบคุณ ใช่. ฉันเพิ่งปรับปรุงคำถามของฉัน โอ้มันเป็นการปิดบังตัวตนของฉัน ...
User007

1
@ User007 รักส่วน 007 .. และดูเหมือนว่าคุณกำลังทำงานในหลามเกินไป (ซึ่งเป็นอีกหนึ่งในรายการโปรดของฉัน)
เฮล์มส

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