tar -cjf site1.tar.bz2 -C /var/www/site1 .
Ve výše uvedeném příkladu se tar změní na adresář /var/www/site1
než uděláte svou věc, protože volba -C /var/www/site1
byl dán.
Od man tar
:
OTHER OPTIONS
-C, --directory DIR
change to directory DIR
Možnost -C
díla; jen pro upřesnění uvedu 2 příklady:
-
vytvoření tarballu bez úplné cesty:plná cesta
/home/testuser/workspace/project/application.war
a my chceme jenproject/application.war
takže:tar -cvf output_filename.tar -C /home/testuser/workspace project
Poznámka:mezi
workspace
je mezera aproject
; tar nahradí celou cestu pouzeproject
. -
extrakce tarballu se změnou cílové cesty (výchozí
.
, tj. aktuální adresář)tar -xvf output_filename.tar -C /home/deploy/
tar
extrahuje tarball na základě dané cesty a zachová cestu vytvoření; v našem příkladu souborapplication.war
bude extrahován do/home/deploy/project/application.war
./home/deploy
:uvedeno na výpisu
project
:dáno při vytváření tarballu
Poznámka:pokud chcete umístit vytvořený tarball do cílového adresáře, stačí přidat cílovou cestu před název tarballu. např.:
tar -cvf /path/to/place/output_filename.tar -C /home/testuser/workspace project
Zdá se, že -C
volba až do tar v2.8.3 nefunguje konzistentně na všech platformách (OS). -C
říká se, že možnost přidat adresář do archivu, ale na Macu a Ubuntu přidá absolutní předponu cesty do generovaného souboru tar.gz.
tar target_path/file.tar.gz -C source_path/source_dir
Proto je konzistentním a robustním řešením cd
do source_path (rodičovský adresář source_dir) a spusťte
tar target_path/file.tar.gz source_dir
nebo
tar -cf target_path/file.tar.gz source_dir
ve vašem skriptu. Toto odstraní absolutní předponu cesty v adresářové struktuře vašeho vygenerovaného souboru tar.gz.