Quiero tar directorio X sin incluir a sus padres

9
tar cvf /var/lib/backup/sample.tar /home/user/.project

Sin embargo, cuando extraigo, también obtengo sus padres

/backup/
  - /home/
     - /user/
        - .project/

Este comando tar funciona bien porque no incluye nada más en sus padres (otras carpetas debajo, userpor ejemplo).

Quiero hacer esto mediante programación, por lo que cambiar el directorio de trabajo actual /home/user/no es realmente una opción. ¿Es posible hacer eso?

Usuario007
fuente

Respuestas:

17

Puede usar la -Copción para cambiar al /home/userdirectorio antes de la tarificación o usar --strip-components 2en la extracción.

tar cvfC /var/lib/backup/sample.tar /home/user .project
#                              Note the space ^
tar cvf /var/lib/backup/sample.tar /home/user/.project
tar Cxf /backup /var/lib/backup/sample.tar --strip-components 2
Kevin
fuente
1
+1 genial ... Acabo de encontrar el -Cinterruptor cuando estaba mirando la página de manual , pero no podía entenderlo ... me pareció más como si fuera usado durante untar. Aprendí algo nuevo.
Levon
@ Kevin Gracias. La opción C funciona a la perfección. ¡Gracias!
Usuario007
2
No pude hacerlo funcionar así. Según la lectura de gnu.org/software/tar/manual/tar.html#SEC118 tuve éxito con la siguiente forma: tar cvf /var/lib/backup/sample.tar -C / home / user .project
Aivar
2

Creo que si va cdal directorio de nivel superior del que desea crear el tararchivo, no debería tener este problema. Es decir,

cda usery tarhasta .project.. puede especificar el destino para el archivo tar en el /var/... que antes.

O hay una razón por la que no quiere / no pueden cda user?

Levon
fuente
Si. Esa sería una solución. Gracias. Pero espero que haya una mejor manera? Quiero tratar con este aliado programático, y no quiero emitir os.chdir(base_dir)mi código todo el tiempo :) así que sería bueno si hay una salida a esto. Gracias
Usuario007
@ Usuario007 Ah ... ok, ya veo. Es posible que desee actualizar su pregunta para incluir ese requisito. ID de usuario agradable por cierto :)
Levon
Gracias. Si. Acabo de actualizar mi pregunta. Oh, es para ocultar mi identidad ...
User007
1
@ User007 ama la parte 007 ... y parece que también estás trabajando en Python (que es otro de mis favoritos)
Levon
:) Si. Muy bien, nuestro amigo Kevinme ayudó con el comando correcto. Entonces le daré la marca. Pero te he votado. ¡Gracias!
Usuario007