tar - Menghapus komponen direktori terkemuka pada ekstraksi

104

Bagaimana Anda bisa mengekstrak hanya direktori target dan bukan pohon direktori 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 akan dibuat ketika file diekstraksi?

Apa yang saya ingin ekstrak untuk:

/tmp/site
clarkk
sumber

Jawaban:

34

Mengapa tidak menggunakan -Copsi saat membuat:

$ tar cf /var/www/site.tar -C /var/www_bak/ site
kuanta
sumber
1
TMTOWTDI. Itu akan bekerja juga, menggunakan -Copsi yang sama ;)
MikeyB
12
Dia ingin menghapus jalur dari beberapa komponen terkemuka, bukan mengubah direktori keluaran. Lihat di bawah untuk jawaban yang benar.
aymericbeaumet
4
Kami tidak dapat menggunakannya ketika orang lain menyiapkan arsip.
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
258

Anda ingin menggunakan --strip-components=NUMBERopsi 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
MikeyB
sumber
19
Jawaban ini lebih baik karena Anda tidak perlu memikirkannya sebelum pembuatan tar. Anda dapat menggunakannya dengan file tar yang sudah dibuat. Terima kasih @MikeyB!
Fabien Quatravaux
4
Saya senang melaporkan ini berfungsi baik di GNU tar dan BSD tar.
Nathan Osman
4
dan karena Anda mungkin bukan pembuat tar ... (atau jika Anda melakukannya dengan alat lain dan alat itu melakukan hal-hal konyol ...)
xenoterracide
Anda mungkin masih kehilangan --strip-componentstanda jika Anda menggunakan implementasi embeddedbox dari tar.
sylvainulg
1
@FabienQuatravaux Ya, ya --- jika Anda melakukan kesalahan dan membuat arsip yang menyertakan direktori terkemuka yang tidak ingin Anda lihat selama ekstraksi. Tetapi lebih jelas untuk membangun arsip tanpa direktori terkemuka yang tidak diinginkan di tempat pertama.
Calaf