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:
-
creación de un tarball sin la ruta completa:ruta completa
/home/testuser/workspace/project/application.war
y lo que queremos es soloproject/application.war
entonces:tar -cvf output_filename.tar -C /home/testuser/workspace project
Nota:hay un espacio entre
workspace
yproject
; tar reemplazará la ruta completa con soloproject
. -
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 archivoapplication.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.