Bagaimana Anda bisa menunjuk jalur terkemuka yang sewenang-wenang saat menambahkan file ke tar?

10

Apakah mungkin untuk menetapkan jalur arbitrer dalam arsip tar untuk menempatkan file yang mungkin tidak ada pada sistem file asli Anda? Ini berbeda dari saklar -C di mana saya mungkin ingin mengambil kembali / etc /, tetapi letakkan di arsip sebagai / konfigurasi / etc /.

andyortlieb
sumber
1
IIRC -sopsi melakukan itu, tetapi tidak punya waktu untuk menulis seluruh jawaban sekarang.
Chris S
@ChrisS Dalam GNU tar 1.28 (Ubuntu 16.04) opsi -sadalah kependekan --preserve-orderdan dengan demikian di luar topik. di sini
Stéphane Gourichon

Jawaban:

7

Di GNU tar, --transform( --xform) adalah opsi untuk membuat transformasi nama file. Dokumentasi dan contoh dapat ditemukan di sini

Ciclamino
sumber
Saya akan melihat ini seandainya saya membaca man tar di sistem saya daripada di linux.die.net !! Terima kasih atas jawabannya, regex bahkan lebih baik dari yang saya harapkan.
andyortlieb
2
@andyorlieb, terima kasih atas masukan pada "--xform" tidak berfungsi pada sistem Anda, tapi tolong jangan mengubah konten jawaban orang kecuali Anda memiliki referensi yang pasti untuk mendukungnya. Terima kasih.
Chris S
-spada tar OSX terlihat mirip
GM
Dokumentasi yang disebutkan berusaha keras untuk menjelaskan --transform=expressionpada waktu ekstrak , namun tidak mengatakan apa-apa tentang menambah waktu (yang merupakan pertanyaan aktual yang diajukan).
Stéphane Gourichon
3

Dalam tar BSD, -s patternadalah opsi untuk membuat transformasi nama. Mengutip dari dokumentasi 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.
Patrick M
sumber
1
Saya tahu bahwa tar mengatakan ini khusus tentang GNU tar, dan Stéphane berkomentar bahwa pada dasarnya tar non-gnu adalah di luar topik. Namun, karena tidak ada tag untuk tar BSD, saya pikir ini adalah jawaban yang tepat.
Patrick M