GNU/Linux >> Tutoriales Linux >  >> Linux

Tar un directorio, pero no almacene rutas absolutas completas en el archivo

tar -cjf site1.tar.bz2 -C /var/www/site1 .

En el ejemplo anterior, tar cambiará al directorio /var/www/site1 antes de hacer lo suyo porque la opción -C /var/www/site1 fue dado.

Desde man tar :

OTHER OPTIONS

  -C, --directory DIR
       change to directory DIR

La opción -C obras; solo como aclaración, publicaré 2 ejemplos:

  1. creación de un tarball sin la ruta completa:ruta completa /home/testuser/workspace/project/application.war y lo que queremos es solo project/application.war entonces:

    tar -cvf output_filename.tar  -C /home/testuser/workspace project
    

    Nota:hay un espacio entre workspace y project; tar reemplazará la ruta completa con solo project .

  2. extracción de tarball con el cambio de la ruta de destino (por defecto a . , es decir, el directorio actual)

    tar -xvf output_filename.tar -C /home/deploy/
    

    tar extraerá tarball en función de la ruta dada y conservará la ruta de creación; en nuestro ejemplo el archivo application.war se extraerá a /home/deploy/project/application.war .

    /home/deploy :dado en extracto
    project :dado en la creación de tarball

Nota:si desea colocar el tarball creado en un directorio de destino, simplemente agregue la ruta de destino antes del nombre del tarball. por ejemplo:

tar -cvf /path/to/place/output_filename.tar  -C /home/testuser/workspace project

Parece -C La opción upto tar v2.8.3 no funciona de manera consistente en todas las plataformas (SO). -C Se dice que la opción agrega un directorio al archivo, pero en Mac y Ubuntu agrega un prefijo de ruta absoluto dentro del archivo tar.gz generado.

tar target_path/file.tar.gz -C source_path/source_dir

Por lo tanto, la solución consistente y robusta es cd en source_path (directorio principal de source_dir) y ejecute

tar target_path/file.tar.gz source_dir

o

tar -cf target_path/file.tar.gz source_dir

en tu guión. Esto eliminará el prefijo de ruta absoluta en la estructura de directorios del archivo tar.gz generado.


Linux
  1. ¿Cómo tardo un directorio sin conservar la estructura del directorio?

  2. ¿Cómo obtengo el directorio absoluto de un archivo en bash?

  3. Ejecute un ls sin obtener la ruta completa

  4. ¿Cuál es el directorio recomendado para almacenar el contenido del sitio web?

  5. ¿Cómo elimino la ruta completa al hacer una compresión tar.gz?

¿Crear un archivo Tar de un directorio, a excepción de los archivos ocultos?

¿Obtener el nombre completo de la ruta de un directorio dado?

Ruta absoluta vs relativa en Linux:¿Cuál es la diferencia?

El tutorial Ultimate Tar Command con 10 ejemplos prácticos

Forma correcta de usar la opción --remove-files con TAR

¿Cómo excluir archivos del archivo TAR usando expresiones regulares?