alcatrão com caminhos relativos

24

Eu tento criar um arquivo com tar usando caminhos relativos. Eu uso o seguinte comando:

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

Mas os arquivos arquivados ainda têm caminhos absolutos. Como posso usar o tar com caminhos relativos?

Mert Nuhoglu
fonte
related: stackoverflow.com/questions/18681595/…
Ciro Santilli escreveu:

Respostas:

24

'~' é expandido pelo shell. Não use '~' com -C:

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

(o tar incluirá o caminho da webapps / zers / wp-content / plugins / my-page-order) ou

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

(o tar incluirá o caminho do pedido da minha página)

Ou apenas cd primeiro ....

cd ~/webapps/zers/wp-content/plugins
tar czf ~/files/wp/my-page-order.tar.gz my-page-order
symcbean
fonte
2
A explicação está errada. Não importa aqui que ~ seja expandido por shell. O que importa é que -Caltera o diretório de trabalho atual, conforme explicado na resposta de Lekensteyn.
Piotr Dobrogost
1
Não - olhe para a pergunta original - o último argumento é um caminho absoluto.
Symcbean # 8/15
E daí? Ambas as instâncias de ~ são expandidas e toda a invocação não está funcionando como esperado, apenas porque o último argumento em caso de uso -Cdeveria ter sido fornecido como caminho relativo, mas sim como caminho absoluto. Usar ~ aqui não importa.
Piotr Dobrogost
11

-C new_cwdaltera o diretório de trabalho atual para new_cwd. Os argumentos a seguir são avaliados em relação a new_cwd.

tar czf ~ / arquivos / wp / minha-página-ordem.tar.gz -C ~ / webapps / zers / conteúdo-wp / plugins / minha-página-ordem

Lekensteyn
fonte
4

A solução não GNU se tarnão tiver -zopção, apenas para mencionar:

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

EDIT (com &&e sem rm):

pushd ~/files/wp && tar cvf - my-page-order | gzip > my-page-order.tar.gz && popd
Mattia72
fonte
(1) A questão não diz nada sobre rm; Por que você o inclui em sua resposta? (2) Sua resposta arquiva o diretório errado. (3) Por que você mudou tar -zpara tar | gzip? (4) Enquanto você usar &&, provavelmente também deve usar o &&após pushd.
G-Man Diz 'Reinstate Monica' em
(1) Você está certo (2) realmente? Qual é o bom? (3) este é o ponto: a versão não GNU do tar (por exemplo, no Unix), não possui -z (4) eu provavelmente usaria &&em um script, mas acho que isso não é necessário em um "one liner"
Mattia72
(2) OP quer arquivar ~/webapps/zers/wp-content/plugins/my-page-ordercom saída para ~/files/wp/my-page-order.tar.gz; seus arquivos de comando ~/files/wp/my-page-order. (3) Obrigado por editar sua resposta para explicar por que você usou gzip.
G-Man Diz 'Reinstate Monica'