Snažím se komprimovat složku (/var/www/
) až ~/www_backups/$time.tar
kde $time
je aktuální datum.
To je to, co mám:
cd /var/www && Sudo tar -czf ~/www_backups $time"
Jsem úplně ztracen a už jsem v tom celé hodiny. Nejsem si jistý, jestli -czf
je správně. Jednoduše chci zkopírovat veškerý obsah z /var/www
do $time.tar
soubor a chci si zachovat oprávnění k souborům pro všechny soubory. Může mi někdo pomoci?
Pro složku tar
a gzip
je syntaxe následující:
tar czf name_of_archive_file.tar.gz name_of_directory_to_tar
The -
je volitelné. Pokud chcete tar
aktuální adresář, použijte .
označit to.
Chcete-li vytvořit svůj název souboru, použijte obslužný program date
(dostupné možnosti formátu najdete v jeho manuálové stránce). Například:
cd /var/www && Sudo tar czf ~/www_backups/$(date +%Y%m%d-%H%M%S).tar.gz .
Tím by se vytvořil soubor nazvaný něco jako 20120902-185558.tar.gz
.
V systému Linux jsou šance tar
také podporují kompresi BZip2 s volbou j
místo z
. A možná i další. Zkontrolujte manuálovou stránku v místním systému.
Příklady nejčastějších kompresních algoritmů
Název otázky je jednoduše „Komprimovat složku pomocí dehtu?“ Protože je tento název velmi obecný, ale otázka a odpověď jsou mnohem konkrétnější, a vzhledem k velkému počtu názorů, které tato otázka přitahovala, jsem se domníval, že by bylo užitečné přidat aktuální seznam příkladů obou archivace/komprese a extrakce/dekomprese s různými běžně používanými kompresními algoritmy.
Byly testovány s Ubuntu 18.04.4. Jsou velmi jednoduché pro obecné použití, ale mohly by být snadno integrovány do konkrétnějšího obsahu otázky OP pomocí technik v přijaté odpovědi a užitečných komentářů výše.
Pro obecnější publikum je třeba poznamenat, že tar
nepřidá potřebná rozšíření (jako .tar.gz
) automaticky - uživatel je musí explicitně přidat, jak je vidět v příkazech níže:
# 1: tar (create uncompressed archive) all files and directories in the current working directory recursively into an uncompressed tarball
tar cvf filename.tar *
# 2: Untar (extract uncompressed archive) all files and directories in an uncompressed tarball recursively into the current working directory
tar xvf filename.tar
# 3: tar (create gzipped archive) all files and directories in the current working directory recursively into a tarball compressed with gzip
tar cvzf filename.tar.gz *
# 4: Untar (extract gzipped archive) all files and directories in a tarball compressed with gzip recursively into the current working directory
tar xvf filename.tar.gz # Note: same options as 2 above
# 5: tar (create bzip2'ed archive) all files and directories in the current working directory recursively into a tarball compressed with bzip2
tar cvjf filename.tar.bz2 * # Note: little 'j' in options
# 6: Untar (extract bzip2'ed archive) all files and directories in an tarball compressed with bzip2 recursively into the current working directory
tar xvf filename.tar.bz2 # Note: same options as 2 and 4 above
# 7: tar (create xz'ed archive) all files and directories in the current working directory recursively into a tarball compressed with xz
tar cvJf filename.tar.xz * # Note: capital 'J' in options
# 8: Untar (extract xz'ed archive) all files and directories in an tarball compressed with xz recursively into the current working directory
tar xvf filename.tar.xz # Note: same options as 2, 4, and 6 above
Podívejte se na dehet manuálová stránka (nejlepší použít man tar
na vašem konkrétním počítači) pro další podrobnosti. Níže shrnuji možnosti použité výše přímo z manuálové stránky:
-c, - vytvoř
Vytvořte nový archiv-x, --extract, --get
Extrahujte soubory z archivu-v, - verbose
Podrobně seznam zpracovaných souborů-z, - gzip
Filtrujte archiv pomocí gzip-j, - bzip2
Filtrujte archiv pomocí bzip2-J, - xz
Filtrujte archiv přes xz-f, --file = ARCHIV
Použijte archivní soubor nebo zařízení ARCHIV
Není třeba přidávat -
před kombinovanými možnostmi nebo =
podepsat mezi volbou f
a názvem souboru.
Všechno jsem dostal z mého nedávného článek , který bude dále rozšířen do mnohem komplexnějšího článku, protože na něm mám čas na tom pracovat.