คุณจะกำหนดเส้นทางนำโดยพลการได้อย่างไรเมื่อเพิ่มไฟล์ลงใน tar


10

เป็นไปได้หรือไม่ที่จะกำหนดเส้นทางโดยพลการภายในไฟล์เก็บถาวร tar เพื่อวางไฟล์ซึ่งอาจไม่มีอยู่ในระบบไฟล์ดั้งเดิมของคุณ? สิ่งนี้แตกต่างจากสวิตช์ -C ซึ่งฉันอาจต้องการสำรองข้อมูล / etc / แต่วางไว้ในไฟล์เก็บถาวรเป็น / configurations / etc /


1
IIRC -sตัวเลือกทำเช่นนั้น แต่ไม่มีเวลาเขียนคำตอบทั้งหมดตอนนี้
Chris S

@ChrisS ใน GNU tar 1.28 ตัวเลือก (Ubuntu 16.04) -sนั้นสั้น--preserve-orderและไม่เป็นเช่นนั้น ที่นี่
Stéphane Gourichon

คำตอบ:


7

ใน GNU tar, --transform( --xform) เป็นตัวเลือกในการแปลงชื่อไฟล์ เอกสารและตัวอย่างสามารถพบได้ที่นี่


ฉันจะได้เห็นสิ่งนี้ถ้าฉันอ่าน man tar บนระบบของฉันมากกว่าบน linux.die.net !! ขอบคุณสำหรับคำตอบ regex ดีกว่าที่ฉันคาดไว้
andyortlieb

2
@ Andyorlieb ขอบคุณสำหรับการป้อนข้อมูลใน "--xform" ไม่ทำงานในระบบของคุณ แต่โปรดอย่าเปลี่ยนเนื้อหาของคำตอบของผู้คนเว้นแต่คุณจะมีการอ้างอิงที่ชัดเจนเพื่อสำรองข้อมูล ขอบคุณ.
Chris S

-sบน tar ของ OSX คล้ายกัน
gman

เอกสารที่กล่าวถึงไปยาวที่ดีที่จะอธิบาย--transform=expressionในสารสกัดจากเวลาที่ยังไม่พูดอะไรเกี่ยวกับการเพิ่มเวลา (ซึ่งเป็นคำถามที่เกิดขึ้นจริงถาม)
Stéphane Gourichon

3

ใน BSD tar -s patternเป็นตัวเลือกในการแปลงชื่อ การอ้างอิงจากเอกสาร freebsd.org :

-s  pattern
     Modify file or archive member names according to pattern.  The
     pattern has the format /old/new/[ghHprRsS] where old is a basic
     regular expression, new is the replacement string of the matched
     part, and the optional trailing letters modify how the replace-
     ment is handled.  If old is not matched, the pattern is skipped.
     Within new, ~ is substituted with the match, \1 to \9 with the
     content of the corresponding captured group.  The optional trail-
     ing g specifies that matching should continue after the matched
     part and stop on the first unmatched pattern.  The optional
     trailing s specifies that the pattern applies to the value of
     symbolic links.  The optional trailing p specifies that after a
     successful substitution the original path name and the new path
     name should be printed to standard error.  Optional trailing H,
     R, or S characters suppress substitutions for hardlink targets,
     regular filenames, or symlink targets, respectively.  Optional
     trailing h, r, or s characters enable substitutions for hardlink
     targets, regular filenames, or symlink targets, respectively.
     The default is hrs which applies substitutions to all names.  In
     particular, it is never necessary to specify h, r, or s.

1
ฉันรู้ว่าน้ำมันดินบอกว่ามันเกี่ยวกับ GNU tar โดยเฉพาะและStéphaneให้ความเห็นว่าน้ำมันดินที่ไม่ใช่ gnu นั้นเป็นหัวข้อนอกเรื่อง อย่างไรก็ตามเนื่องจากไม่มีแท็กสำหรับ tar BSD ฉันคิดว่านี่เป็นคำตอบที่เหมาะสม
Patrick M
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.