GNU/Linux >> Znalost Linux >  >> Linux

Tar adresář, ale neukládejte úplné absolutní cesty do archivu

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:

  1. vytvoření tarballu bez úplné cesty:plná cesta /home/testuser/workspace/project/application.war a my chceme jen project/application.war takže:

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

    Poznámka:mezi workspace je mezera a project; tar nahradí celou cestu pouze project .

  2. 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 soubor application.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.


Linux
  1. Absolutní / Kanonické / Relativní cesty?

  2. Získání úplného názvu cesty daného adresáře?

  3. Příkaz tar pro Linux

  1. Jak mohu tarovat adresář bez zachování adresářové struktury?

  2. Jak získám absolutní adresář souboru v bash?

  3. Spusťte ls, aniž byste získali úplnou cestu

  1. Jaký je doporučený adresář pro ukládání obsahu webových stránek?

  2. Jak odstraním úplnou cestu při provádění komprese tar.gz?

  3. Jak zkopíruji strom adresářů, ale ne soubory v Linuxu?