tar dengan jalur relatif

24

Saya mencoba membuat arsip dengan tar menggunakan jalur relatif. Saya menggunakan perintah berikut:

tar czf ~/files/wp/my-page-order.tar.gz -C ~/webapps/zers/wp-content/plugins/ ~/webapps/zers/wp-content/plugins/my-page-order

Tetapi file yang diarsipkan masih memiliki jalur absolut. Bagaimana saya bisa menggunakan tar dengan jalur relatif?

Mert Nuhoglu
sumber
terkait: stackoverflow.com/questions/18681595/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

24

'~' diperluas oleh shell. Jangan gunakan '~' dengan -C:

tar czf ~/files/wp/my-page-order.tar.gz \
      -C ~ \
       webapps/zers/wp-content/plugins/my-page-order

(tar akan menyertakan webapps / zers / wp-content / plugins / jalur pesanan halaman saya) atau

tar czf ~/files/wp/my-page-order.tar.gz \
      -C ~/webapps/zers/wp-content/plugins \
       my-page-order

(tar akan menyertakan jalur pemesanan halaman saya)

Atau hanya cd dulu ....

cd ~/webapps/zers/wp-content/plugins
tar czf ~/files/wp/my-page-order.tar.gz my-page-order
symcbean
sumber
2
Penjelasan salah. Tidak masalah di sini bahwa ~ diperluas oleh shell. Yang penting adalah bahwa -Cmengubah direktori kerja saat ini seperti yang dijelaskan dalam anwer oleh Lekensteyn.
Piotr Dobrogost
1
Tidak - lihat pertanyaan aslinya - argumen terakhir adalah jalur absolut.
symcbean
Terus? Kedua instance ~ diperluas dan seluruh doa tidak berfungsi seperti yang diharapkan hanya karena argumen terakhir dalam kasus penggunaan -Cseharusnya diberikan sebagai jalur relatif tetapi sebaliknya diberikan sebagai jalur absolut. Menggunakan ~ di sini tidak masalah sama sekali.
Piotr Dobrogost
11

-C new_cwdmengubah direktori kerja saat ini menjadi new_cwd. Argumen berikut ini kemudian dievaluasi relatif terhadap new_cwd.

tar czf ~ / file / wp / my-page-order.tar.gz -C ~ / webapps / zers / wp-content / plugins / my-page-order

Lekensteyn
sumber
4

Solusi non GNU jika tartidak memiliki -zopsi, hanya untuk menyebutkan:

pushd ~/files/wp; tar cvf - my-page-order | gzip > my-page-order.tar.gz && rm -rf my-page-order; popd

EDIT (dengan &&dan tanpa rm):

pushd ~/files/wp && tar cvf - my-page-order | gzip > my-page-order.tar.gz && popd
Mattia72
sumber
(1) Pertanyaannya tidak mengatakan apa-apa tentang rm; mengapa Anda memasukkannya dalam jawaban Anda? (2) Jawaban Anda mengarsipkan direktori yang salah. (3) Mengapa kamu berubah tar -zke tar | gzip? (4) Selama Anda akan menggunakan &&, Anda mungkin harus menggunakan &&setelah itu pushdjuga.
G-Man Mengatakan 'Reinstate Monica'
(1) Kamu benar (2) benarkah? Mana yang bagus? (3) ini intinya: versi tar non GNU (mis. Pada Unix), tidak memiliki -z (4) Saya mungkin akan menggunakan &&skrip, tapi saya pikir ini tidak diperlukan dalam "satu liner"
Mattia72
(2) OP ingin mengarsipkan ~/webapps/zers/wp-content/plugins/my-page-orderdengan output untuk ~/files/wp/my-page-order.tar.gz; arsip perintah Anda ~/files/wp/my-page-order. (3) Terima kasih telah mengedit jawaban Anda untuk menjelaskan mengapa Anda menggunakannya gzip.
G-Man Mengatakan 'Reinstate Monica'