tar avec chemins relatifs

24

J'essaie de créer une archive avec tar en utilisant des chemins relatifs. J'utilise la commande suivante:

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

Mais les fichiers archivés ont toujours des chemins absolus. Comment puis-je utiliser tar avec des chemins relatifs?

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

Réponses:

24

'~' est développé par le shell. N'utilisez pas '~' avec -C:

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

(tar inclura les webapps / zers / wp-content / plugins / chemin d'accès à ma page) ou

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

(tar inclura le chemin de commande de ma page)

Ou tout simplement en premier cd ....

cd ~/webapps/zers/wp-content/plugins
tar czf ~/files/wp/my-page-order.tar.gz my-page-order
symcbean
la source
2
L'explication est fausse. Peu importe ici que ~ soit développé par shell. Ce qui importe, c'est que -Cle répertoire de travail actuel change, comme expliqué dans une réponse de Lekensteyn.
Piotr Dobrogost du
1
Non - regardez la question d'origine - le dernier argument est un chemin absolu.
symcbean
Et alors? Les deux instances de ~ sont développées et l'invocation entière ne fonctionne pas comme prévu uniquement parce que le dernier argument en cas d'utilisation -Caurait dû être donné comme chemin relatif mais à la place est donné comme chemin absolu. L'utilisation de ~ ici n'a pas d'importance du tout.
Piotr Dobrogost
11

-C new_cwdchange le répertoire de travail actuel en new_cwd. Les arguments suivants sont ensuite évalués par rapport à new_cwd.

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

Lekensteyn
la source
4

La solution non GNU tarn'a pas d' -zoption, juste pour mentionner:

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

EDIT (avec &&et sans rm):

pushd ~/files/wp && tar cvf - my-page-order | gzip > my-page-order.tar.gz && popd
Mattia72
la source
(1) La question ne dit rien rm; pourquoi l'incluez-vous dans votre réponse? (2) Votre réponse archive le mauvais répertoire. (3) Pourquoi avez-vous changé tar -zpour tar | gzip? (4) Tant que vous allez utiliser &&, vous devriez probablement utiliser aussi &&après le pushd.
G-Man dit «Réinstalle Monica»
(1) Vous avez raison (2) vraiment? Quelle est la bonne? (3) c'est le point: la version non GNU de tar (par exemple sur Unix), n'a pas -z (4) que j'utiliserais probablement &&dans un script, mais je pense que ce n'est pas nécessaire dans un "one liner"
Mattia72
(2) OP souhaite archiver ~/webapps/zers/wp-content/plugins/my-page-orderavec une sortie vers ~/files/wp/my-page-order.tar.gz; vos archives de commandes ~/files/wp/my-page-order. (3) Merci d'avoir édité votre réponse pour expliquer pourquoi vous l'avez utilisée gzip.
G-Man dit «Réinstalle Monica»