A tar
e gzip
una cartella, la sintassi è:
tar czf name_of_archive_file.tar.gz name_of_directory_to_tar
Il -
con czf
è facoltativo.
Se vuoi tar
la directory corrente, usa .
per designarlo.
Per costruire dinamicamente nomi di file, usa il date
utility (guarda la sua pagina man per le opzioni di formato disponibili). Ad esempio:
cd /var/www &&
tar czf ~/www_backups/$(date +%Y%m%d-%H%M%S).tar.gz .
Questo creerà un file chiamato qualcosa come 20120902-185558.tar.gz
.
Su Linux, è probabile che tu sia tar
supporta anche la compressione BZip2 con j
anziché z
opzione. E forse altri. Controlla la pagina man sul tuo sistema locale.
Esempi per gli algoritmi di compressione più comuni
Il titolo della domanda per questo è semplicemente "Comprimi una cartella con tar?" Poiché questo titolo è molto generico, ma la domanda e la risposta sono molto più specifiche, e dato l'elevato numero di visualizzazioni che questa domanda ha attirato, ho ritenuto utile aggiungere un elenco aggiornato di esempi di entrambi archiviazione/compressione ed estrazione/decompressione, con vari algoritmi di compressione comunemente usati.
Questi sono stati testati con Ubuntu 18.04.4. Sono molto semplici per l'uso generale, ma potrebbero essere facilmente integrati nei contenuti delle domande più specifiche del PO utilizzando le tecniche nella risposta accettata e gli utili commenti sopra.
Una cosa da notare per il pubblico più generico è che tar
non aggiungerà le estensioni necessarie (come .tar.gz
) automaticamente - l'utente deve aggiungerli esplicitamente, come mostrato nei comandi seguenti:
# 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
Vedi la pagina man di tar (meglio usare man tar
sulla macchina specifica) per ulteriori dettagli. Di seguito riassumo le opzioni utilizzate sopra direttamente dalla pagina man:
-c, --crea
crea un nuovo archivio-x, --extract, --get
estrarre i file da un archivio-v, --prolisso
elenca dettagliatamente i file elaborati-z, --gzip
filtrare l'archivio tramite gzip-j, --bzip2
filtra l'archivio tramite bzip2-J, --xz
filtra l'archivio tramite xz-f, --file=ARCHIVIO
usa il file di archivio o il dispositivo ARCHIVE
Non c'è bisogno di aggiungere -
davanti alle opzioni combinate, o il =
segno tra f
opzione e il nome del file.
Ho tratto tutto questo dal mio recente articolo, che sarà ulteriormente ampliato in un articolo molto più completo man mano che avrò tempo per lavorarci.