Saya ingin tar root (/) dan membiarkannya muncul sebagai / abc di arsip tar.
Apakah ada bendera tar untuk menentukan nama tingkat atas khusus?
Saya ingin tar root (/) dan membiarkannya muncul sebagai / abc di arsip tar.
Apakah ada bendera tar untuk menentukan nama tingkat atas khusus?
Jawaban:
Pilihan terdekat yang bisa saya temukan adalah --transformopsi. Saya tidak tahu pasti, tapi saya kira ini hanya bendera GNU:
--transform, --xform EXPRESSION
use sed replace EXPRESSION to transform file names
Dengan menggunakan itu, Anda bisa melewati sedperintah substitusi dan mengubah /ke /abc:
tar cf root.tgz --transform 's/^\//\/abc/' /
Ini masih akan mencetak /jalur saat membuat arsip tetapi itu akan menjadi /abcketika Anda mengekstraknya.
Pendekatan lain, jika Anda tartidak memiliki --transformopsi adalah membuat /abcsymlink yang menunjuk ke /dan kemudian tar itu:
$ ln -s / /abc
$ tar chf root.tgz /abc
Sangat -hpenting karena itulah yang memberitahu taruntuk mengikuti tautan:
-h, --dereference
follow symlinks; archive and dump the files they point to
Itu akan memiliki efek pengaturan /abcsebagai direktori tingkat atas.
Dengan GNU tar, Anda dapat menggunakan perintah itu:
tar --transform="s|/|/abc/|" -Pcf bar.tar /
Jika tidak, berikut ini adalah cara portabel untuk melakukannya, yaitu yang tidak bergantung pada GNU atau ekstensi tar spesifik lainnya tetapi didasarkan pada alat POSIX yang harus tersedia pada mesin apa pun yang mematuhi Unix:
pax -w -s '/\//\/abc\//' -f foo.tar /
Inilah cara saya melakukannya yang berfungsi untuk tarring dari lokasi mana pun (bukan hanya /):
tar --transform 's|^|/abc/|' -zcvf /path/to/dest.tgz *
Ini hanya menambahkan a /abc/ke awal setiap jalur.
tar: Removing leading / from member names. Menggunakan's|^|abc/|'bekerja dengan baik untuk saya.