Pregunta tar - Eliminar los componentes principales del directorio en la extracción


¿Cómo se puede extraer solo el directorio de destino y no el árbol completo de directorios?

comprimir

tar cf /var/www/site.tar /var/www_bak/site

extraer

tar xf /var/www/site.tar -C /tmp

Esto producirá:

/tmp/var/www/site

¿Cómo es posible evitar que se cree todo el árbol de directorios cuando se extrae el archivo?

Lo que quiero extraer a:

/tmp/site

75
2017-11-11 14:58


origen




Respuestas:


¿Por qué no usar -C Opción al crear:

$ tar cf /var/www/site.tar -C /var/www_bak/ site

27
2017-11-11 15:12



TMTOWTDI. Eso también funcionaría, usando el mismo -C opción ;) - MikeyB
Quiere quitar la ruta de algunos componentes principales, no cambiar el directorio de salida. Vea a continuación la respuesta correcta. - aymericbeaumet
No podemos usarlo cuando alguien más prepara el archivo. - jww
Porque `` `_t = prefijo - $ (fecha +% Y% m% d); tar -cjf ".backups / $ _ t.tar.bz2" --transform = "s # ^ (\ ./)? # $ _ t / # x;" - archivos ...; tar -df ".backups / $ _ t.tar.bz2" --strip-components = 1 `` ` - AnrDaemon


Quieres usar el --strip-components=NUMBER opción de tar:

 --strip-components=NUMBER
       strip NUMBER leading components from file names on extraction

Tu orden sería:

tar xfz /var/www/site.gz --strip-components=2 -C /tmp

206
2017-11-11 15:04



Esta respuesta es mejor porque no tiene que pensarlo antes de la creación de alquitrán. Puedes usarlo con un archivo tar ya creado. Gracias @MikeyB! - Fabien Quatravaux
¡Funcionó como por arte de magia! ¡Gracias! - Marcello de Sales
Me complace informar que esto funciona tanto en GNU tar como en BSD tar. - Nathan Osman
y porque puede que no seas el creador de alquitrán ... (o si lo estás haciendo con otra herramienta y esa herramienta hace cosas tontas ...) - xenoterracide
todavía podrías estar desaparecido --strip-components marca si estás usando la implementación de busybox-embebida de tar, aunque. - sylvainulg