tar: Cara membuat file tar dengan direktori terkemuka sewenang-wenang tanpa perintah ke direktori induk

23

Katakanlah saya memiliki direktori file di

/home/user1/dir1

dan saya ingin membuat tar dengan hanya "dir1" sebagai direktori utama:

/dir1/file1
/dir1/file2

Saya tahu saya bisa melakukan cd pertama ke direktori

cd /home/user1/
tar czvf dir1.tar.gz dir1

Tetapi ketika menulis skrip, melompat dari direktori ke direktori tidak selalu menguntungkan. Saya bertanya-tanya apakah ada cara untuk melakukannya dengan jalur absolut tanpa mengubah direktori saat ini?

Saya tahu saya selalu dapat membuat file tar dengan jalur absolut DI DALAM dan menggunakan

--strip-components 

saat mengekstraksi tetapi kadang-kadang nama jalur tambahan adalah informasi pribadi tambahan yang tidak ingin Anda bagikan dengan file tar Anda.

Terima kasih!

Yan
sumber

Jawaban:

24

tar -C mengubah direktori

tar -C /home/user1/ -cvzf dir1.tar.gz dir1

btw, praktis untuk melacak perubahan direktori ... gunakan pushd dan popd.

pushd .
cd /home/user1
tar cvfz dir1.tar.gz
popd
Philip Reynolds
sumber
1
Terima kasih. Saya tidak tahu bahwa opsi "-C" harus digunakan sebelum opsi lain ... Saya mencoba "tar -cvzf dir1.tar.gz dir1 -C / home / user1 /" sebelumnya tetapi tidak berhasil.
Yan
1
Tidak berfungsi: tar: dir: Tidak bisa stat: Tidak ada file atau direktori seperti itu (anggap dir1 berada di bawah / home / user1 /)
tribbloid
21

Dengan gnu tar, Anda dapat membuat arsip dengan direktori basis yang berbeda dari yang sebenarnya dengan:

tar -c --transform 's,^\.,mybasedir,' .

Hanya menyesuaikan ekspresi sed dengan kebutuhan Anda.

Christophe Drevet-Droguet
sumber
5

Oke, saya juga tahu itu

tar -czvf file1.tar.gz /home/user1/dir1/../dir1

juga bekerja seperti yang saya inginkan.

Yan
sumber
Meskipun wildcard seperti "*" tidak berfungsi
Curtis Yallop
2
tar -C /home/user1/dir -c .
Michael Graff
sumber