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.wary lo que queremos es soloproject/application.warentonces:tar -cvf output_filename.tar -C /home/testuser/workspace projectNota:hay un espacio entre
workspaceyproject; 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/tarextraerá tarball en función de la ruta dada y conservará la ruta de creación; en nuestro ejemplo el archivoapplication.warse 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.