compresión tar sin estructura de directorios

compresión tar sin estructura de directorios

En mi directorio actual, tengo dos subdirectorios:

dir_1/
   - file1.png
   - file2.png
   ...
   - fileN.png

dir_2/
   - fileA.txt
   - ...
   - fileZ.txt

Cuando comprimo tar los dos directorios de la siguiente manera:

tar -cvzf result.tar.gz dir_1/ dir_2/ 

Obtuveresultado.tar.gzpero mantiene la estructura del directorio. Quiero decir cuando extraigo elresultado.tar.gz, obtuve dir_1y dir_2otra vez.

¿Cómo puedo comprimir tar para que no se mantenga la estructura del directorio, lo que significa que cuando extraigo el archivo tar.gz, solo obtengo archivos?

result/
   file1.png 
   ... 
   fileN.png 
   fileA.txt
   ...
   fileZ.txt

Respuesta1

Creo que puedes hacer esto con la -Copción.

Desde la página de manual de tar:

-C directory, --cd directory, --directory directory
    In c and r mode, this changes the directory before adding the following files.
    In x mode, change directories after opening the archive but before extracting
    entries from the archive.

Esto significa que deberías poder ejecutar

tar cvzf result.tar.gz -C /path/to/dir1/ . -C /path/to/dir2/ .

para lograr lo que deseas.

Respuesta2

Con GNU tar, puede usar la --transformopción de reescribir nombres de archivos al agregarlos o extraerlos de un archivo. Con BSD tar o con pax, la opción -shace lo mismo.

Para eliminar el componente del directorio principal (para que dir_1/subdir/somefilese almacene como subdir/somefile):

tar -czf result.tar.gz --transform '!^[^/]*/!!' dir_1 dir_2

Para eliminar todos los componentes del directorio (para que dir_1/subdir/somefilese almacenen como somefile):

tar -czf result.tar.gz --transform '!^.*/!!' dir_1 dir_2

información relacionada