Directory esclusa durante la creazione di un file .tar.gz


119

Ho una /public_html/cartella, in quella cartella c'è una /tmp/cartella che ha circa 70 GB di file di cui non ho davvero bisogno.

Ora sto cercando di creare un .tar.gzdi /public_html/esclusione/tmp/

Questo è il comando che ho eseguito:

tar -pczf MyBackup.tar.gz /home/user/public_html/ --exclude "/home/user/public_html/tmp/" 

Il tar è ancora in fase di creazione, e facendo un ls -shposso vedere che MyBackup.tar.gzha già circa 30 GB, e so per certo che /public_html/senza /tmp/non ha più di 1 GB di file.

Cos'ho fatto di sbagliato?



l' -popzione non ha alcun significato in termini di funzione di creazione, giusto !?
Martin Schneider,

Risposte:


201

Prova a rimuovere l'ultima / alla fine del percorso della directory da escludere

tar -pczf MyBackup.tar.gz /home/user/public_html/ --exclude "/home/user/public_html/tmp" 

7
Per escludere l'intera cartella e il suo contenuto: tar -pczvf MyBackup.tar.gz / home / user / public_html / --exclude "/ home / user / public_html / tmp / *"
Dr.jacky

Ottengo tar: Error exit delayed from previous errors.in
macos

Ottenere un errore tar: Rimozione della "/" iniziale dai nomi dei membri
SenG

2
Non funziona, ho dovuto usare al --exclude="/home/user/public_html/tmpposto di--exclude "/home/user/public_html/tmp
Black

1
Ignora il mio commento precedente che non posso più modificare: excludedeve essere specificato prima come note stackoverflow.com/users/3904223/oussaka . Almeno questa è l'unica cosa che ha funzionato per me
kghbln

46

Prova a spostare --excludeprima dell'inclusione.

tar -pczf MyBackup.tar.gz --exclude "/home/user/public_html/tmp/" /home/user/public_html/ 

Grazie, questo ha funzionato per me su una vecchia scatola LTS di Ubuntu 14.04.
Jamsi

1
Avevo bisogno di farlo anche su OS X.
TheJacobTaylor

16

Sì, rimuovi il trailing /e (almeno in ubuntu 11.04) tutti i percorsi forniti devono essere relativi o completi. Non è possibile combinare percorsi assoluti e relativi nello stesso comando.

sudo tar -czvf 2011.10.24.tar.gz ./start-directory --exclude "home/user/start-directory/logs"

non escluderà la directory dei log ma

sudo tar -czvf 2011.10.24.tar.gz ./start-directory --exclude "./start-directory/logs"

funzionerà


1
Lavora per me quando rimuovo il percorso assoluto nell'argomento di esclusione.
jruzafa

2
Il consiglio sul mescolare percorsi assoluti e relativi è stato fondamentale per me qui
Dmitri DB

12

Il comando corretto per escludere la directory dalla compressione è:

tar --exclude='./folder' --exclude='./upload/folder2' -zcvf backup.tar.gz backup/

Assicurati di mettere --exclude prima degli elementi di origine e di destinazione .

e puoi controllare il contenuto del file tar.gz senza decomprimerlo:

tar -tf backup.tar.gz

3

Prova questo

tar -pczvf advancedarts.tar.gz /home/user/public_html/ --exclude /home/user/public_html/tmp

2

Puoi anche escluderne più di uno usando solo uno --exclude. Come questo esempio:

tar -pczf MyBackup.tar.gz --exclude={"/home/user/public_html/tmp","/home/user/public_html/data"} /home/user/public_html/

In --exclude=è necessario terminare il nome della directory senza /e deve essere compreso tra MyBackup.tar.gz e / home / user / public_html /

La sintassi è:

tar <OPTIONS> <TARBALL_WILL_CREATE> <ARGS> <PATH_TO_COMPRESS>

2

La risposta accettata non ha funzionato per me, eseguendo unxutils tar su Windows10. Invece, ho dovuto mettere i file / directory da archiviare come ultimo parametro, in questo modo:

tar -pczf MyBackup.tar.gz --exclude "/home/user/public_html/tmp/" /home/user/public_html/

Poi ha funzionato.


2

Questo ha funzionato per me:

tar -zcvf target.tar.gz target/ --exclude="target/backups" --exclude="target/cache"

2

tar -pczf <target_file.tar.gz> --exclude /path/to/exclude --exclude /another/path/to/exclude/* /path/to/include/ /another/path/to/include/*

Testato in Ubuntu 19.10.

  1. Il =dopo excludeè facoltativo. Puoi usare =invece dello spazio dopo la parola chiave, excludese lo desideri.
  2. Il parametro excludedeve essere posizionato prima della sorgente.
  3. La differenza tra usa il nome della cartella (come la prima) o * (come la seconda) è: la seconda includerà una cartella vuota nel pacchetto ma la prima no.

-2

L'opzione di esclusione deve includere il =segno e "non è richiesta.

--exclude=/home/user/public_html/tmp

1
"è obbligatorio se la cartella ha spazio nel nome
Black
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.