Pertanyaan tar - Hapus komponen direktori utama pada ekstraksi


Bagaimana Anda bisa mengekstrak hanya dir target dan bukan pohon dir lengkap?

kompres

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

ekstrak

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

Ini akan menghasilkan:

/tmp/var/www/site

Bagaimana mungkin untuk menghindari seluruh pohon dir yang dibuat ketika file tersebut diekstraksi?

Apa yang ingin saya ekstrak ke:

/tmp/site

75
2017-11-11 14:58






Jawaban:


Mengapa tidak digunakan -C pilihan saat membuat:

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

27
2017-11-11 15:12



TMTOWTDI. Itu juga akan berhasil, menggunakan yang sama -C pilihan ;) - MikeyB
Dia ingin menghapus jalur dari beberapa komponen utama, tidak mengubah direktori output. Lihat di bawah untuk jawaban yang benar. - aymericbeaumet
Kami tidak bisa menggunakannya ketika orang lain menyiapkan arsip. - jww
Karena `` `_t = awalan - $ (tanggal +% Y% m% d); tar -cjf ".backups / $ _ t.tar.bz2" --transform = "s # ^ (\ ./)? # $ _ t / # x;" - file ...; tar -df ".backups / $ _ t.tar.bz2" --strip-components = 1 `` ` - AnrDaemon


Anda ingin menggunakan --strip-components=NUMBER opsi dari tar:

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

Perintah Anda adalah:

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

206
2017-11-11 15:04



Jawaban ini lebih baik karena Anda tidak perlu memikirkannya sebelum penciptaan tar. Anda dapat menggunakannya dengan file tar yang sudah dibuat. Terima kasih, @MikeyB! - Fabien Quatravaux
Ini bekerja seperti pesona! Terima kasih! - Marcello de Sales
Saya senang untuk melaporkan ini berfungsi baik di tar GNU dan BSD tar. - Nathan Osman
dan karena Anda mungkin bukan pencipta tar ... (atau jika Anda melakukannya dengan alat lain dan alat itu melakukan hal-hal konyol ...) - xenoterracide
Anda mungkin masih hilang --strip-components Tandai jika Anda menggunakan implementasi yang tertanam dari busybox tar, meskipun. - sylvainulg