alquitrán con caminos relativos

24

Intento crear un archivo con tar utilizando rutas relativas. Yo uso el siguiente comando:

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

Pero los archivos archivados aún tienen rutas absolutas. ¿Cómo puedo usar tar con rutas relativas?

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

Respuestas:

24

'~' es expandido por el shell. No use '~' con -C:

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

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

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

(tar incluirá la ruta de pedido de mi página)

O simplemente cd primero ...

cd ~/webapps/zers/wp-content/plugins
tar czf ~/files/wp/my-page-order.tar.gz my-page-order
symcbean
fuente
2
La explicación está mal. No importa aquí que ~ se expanda por shell. Lo que importa es que -Ccambia el directorio de trabajo actual, como explica Lekensteyn en respuesta .
Piotr Dobrogost
1
No, mira la pregunta original: el último argumento es un camino absoluto.
symcbean
¿Y qué? Ambas instancias de ~ se expanden y toda la invocación no funciona como se esperaba solo porque el último argumento en caso de usar -Cdebería haberse dado como ruta relativa, sino que se ha dado como ruta absoluta. Usar ~ aquí no importa en absoluto.
Piotr Dobrogost
11

-C new_cwdcambia el directorio de trabajo actual a new_cwd. Los siguientes argumentos se evalúan en relación con new_cwd.

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

Lekensteyn
fuente
4

La solución no GNU si tarno tiene -zopción, solo por mencionar:

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

EDITAR (con &&y sin rm):

pushd ~/files/wp && tar cvf - my-page-order | gzip > my-page-order.tar.gz && popd
Mattia72
fuente
(1) La pregunta no dice nada sobre rm; ¿Por qué lo incluye en su respuesta? (2) Su respuesta archiva el directorio incorrecto. (3) ¿Por qué han cambiado tar -za tar | gzip? (4) Mientras lo vaya a usar &&, probablemente también debería usarlo &&después del pushd.
G-Man dice 'reinstalar a Monica' el
(1) ¿Tienes razón (2) realmente? Cual es el bueno? (3) este es el punto: la versión de GNU no GNU (por ejemplo, en Unix), no tiene -z (4) probablemente usaría &&en un script, pero creo que esto no es necesario en un "one liner"
Mattia72
(2) OP quiere archivar ~/webapps/zers/wp-content/plugins/my-page-ordercon salida a ~/files/wp/my-page-order.tar.gz; sus archivos de comando ~/files/wp/my-page-order. (3) Gracias por editar su respuesta para explicar por qué la usó gzip.
G-Man dice 'reinstalar a Monica' el