2010-06-30 13 views
35

Estoy ejecutando un script PHP que me proporciona las rutas absolutas de los archivos que quiero subir. Esta es la sintaxis que tengo:¿Cómo excluyo las rutas absolutas para tar?

tar -cf tarname.tar -C /www/path/path/file1.txt /www/path/path2/path3/file2.xls 

Cuando la desenredo, crea la ruta absoluta a los archivos. ¿Cómo obtengo solo /path con todo lo que hay debajo para mostrar?

Respuesta

50

Si desea eliminar los primeros n componentes principales del nombre del archivo, necesita strip-components. Así, en su caso, en la extracción, hacer

tar xvf tarname.tar --strip-components=2 

El man page tiene una lista de tar 's muchas opciones, incluyendo éste. Algunas versiones anteriores de tar usan --strip-path para esta operación.

51

Está utilizando incorrectamente el modificador -C, que se utiliza para cambiar directorios. Así que lo que hay que hacer es:

tar -cf tarname.tar -C /www/path path/file1.txt path2/path3/file2.xls 

o si desea empaquetar todo bajo /www/path hacer:

tar -cf tarname.tar -C /www/path . 

Usted puede utilizar -C interruptor varias veces.

+4

Cuando intento hacer eso, obtengo un archivo llamado punto agregado a mi archivo. tar -cf tarname.tar some_file_in_current_folder -C/some/path. –

+0

Pruebe 'tar -tvf tarname.tar' y verá que no es un archivo. –

0

Si usted no sabe cuántos componentes se encuentran en el camino, puede probar esto:

DIR_TO_PACK=/www/path/ 
cd $DIR_TO_PACK/.. 
tar -cf tarname.tar $(basename $DIR_TO_PACK) 
9

Para mí la siguiente funciona mejor:

tar xvf some.tar --transform 's?.*/??g' 

--transform argumento es un reemplazo regex for sed, al que se alimenta cada filepath extraído. A diferencia de --strip-components, eliminará toda la información de ruta, no solo la cantidad fija de componentes.

+2

Tenga en cuenta que la opción de nombre largo '--transform' es solo para GNU tar. La opción equivalente de BSD tar es '-s' siguiendo el patrón'/old/new/[gps] ', y usar de esta manera, como dijiste, aplanará la jerarquía del directorio, puede no ser útil en la práctica. – Meow

+1

La mejor opción cuando no sabes qué tan profundo va el agujero de conejo (es decir, la estructura de tu directorio). Asegúrese de que todos los nombres de archivo sean únicos en todos los directorios o puede experimentar resultados inesperados. – trs

Cuestiones relacionadas