Comprimere una cartella con tar?

Sto cercando di comprimere una cartella (/var/www/) in ~/www_backups/$time.tar dove $time è la data corrente.

Questo è quello che ho:

cd /var/www && sudo tar -czf ~/www_backups $time" 

Sono completamente perso e ci sto lavorando da ore. Non sono sicuro che -czf sia corretto. Voglio semplicemente copiare tutto il contenuto in /var/www in un file $time.tar e voglio mantenere le autorizzazioni del file per tutti i File. Qualcuno può aiutarmi?

Commenti

  • hai bisogno di un " dallaltra parte di $time.

Rispondi

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 desideri tar directory corrente, utilizza . per designarlo.

Per costruire dinamicamente nomi di file, utilizza lutilità date (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 tar supporti anche la compressione BZip2 con j anziché con z opzione. E forse altri. Controlla la pagina man sul tuo sistema locale.

Commenti

  • È perfetto, grazie. Tuttavia, ho un piccolo problema. Dopo aver creato un file tar di / var / www, viene inserito nelle directory / var / www nel file tar. Qui ' è il codice che ' sto usando ora sudo tar -czf ~/www_backups/$time.tar /var/www/" Immagina di avere un file chiamato test.txt allinterno di / var / www. Dopo aver fatto una copia tar del file, quando lo estraggo verrà inserito nelle directory / var / www. Ha senso? Spero che lo faccia, un po difficile da spiegare. Controllerò il supporto di BZip2, grazie per il suggerimento!
  • Questo ' è il motivo per cui prima cd al directory che desideri impacchettare, quindi tar cf file.tar . – lultima . invece di specificare il percorso completo renderà i percorsi allinterno dellarchivio relativi al directory corrente. Potresti anche usare lopzione -C per tar (guarda la pagina man).
  • Sì, ha funzionato molto meglio. Grazie mille, apprezzatelo!
  • @Qwertylicious -f (dalla pagina man) Read the archive from or write the archive to the specified file.The filename can be - for standard input or standard output.
  • Con le versioni recenti di tar le lettere maiuscole J (invece di z) utilizzeranno xz Compressione LZMA2.

Risposta

Esempi per gli algoritmi di compressione più comuni

Il titolo della domanda è semplicemente " Comprimi un cartella con tar? " Poiché questo titolo è molto generico, ma la domanda e la risposta sono molto più specifiche e, a causa dellelevato numero di visualizzazioni che questa domanda ha attratto, lho sentito sarebbe utile aggiungere un elenco aggiornato di esempi sia di archiviazione / compressione che di estrazione / decompressione, con vari algoritmi di compressione comunemente usati.

Questi sono stati testati con Ubuntu 18.04.4. Sono molto semplici per un uso generale, ma potrebbero essere facilmente integrati nei contenuti delle domande più specifiche dellOP utilizzando le tecniche nella risposta accettata e nei commenti utili sopra.

Una cosa da notare per le domande più generali pubblico è che tar non aggiungerà automaticamente le estensioni necessarie (come .tar.gz): lutente deve aggiungerle esplicitamente, come si vede nella 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 tua macchina specifica) per ulteriori dettagli. Di seguito riassumo le opzioni usate sopra direttamente dalla pagina man:

-c, –create
crea un nuovo archivio

-x, –extract, –get
estrae file da un archivio

-v, –verbose
elenca in modo dettagliato i file elaborati

-z, –gzip
filtra larchivio tramite gzip

-j, –bzip2
filtra larchivio tramite bzip2

-J, –xz
filtra larchivio tramite xz

-f, –file = ARCHIVE
usa il file di archivio o il dispositivo ARCHIVE

Non è necessario aggiungere il - davanti alle opzioni combinate o il segno = tra lopzione f e il nome del file.

Ho preso tutto questo dal mio recente articolo , che verrà ulteriormente ampliato in un articolo molto più completo man mano che avrò tempo per lavorarci it.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *