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.wara my chceme jenproject/application.wartakže:tar -cvf output_filename.tar -C /home/testuser/workspace projectPoznámka:mezi
workspaceje 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/tarextrahuje tarball na základě dané cesty a zachová cestu vytvoření; v našem příkladu souborapplication.warbude 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.