Domanda

Scenario: Ho una directory su un server che ospita il mio sito Web che contiene centinaia di immagini inviate dagli utenti.Sto creando uno script di backup che prende tutte le immagini dalla directory e le comprime in un unico file .tar.gz.Il comando che ho finora è:

tar -czpf /percorso/delle/backup/mio_backup.tar.gz percorso/delle/immagini/

Problema: No, all'interno del mio percorso/a/immagini/ ho una directory chiamata tmp/.Quando eseguo il comando, ottengo un file .tar.gz contenente tutte le immagini nella directory path/to/images/ e una sottodirectory chiamata tmp/.

Domanda: Come posso ottenere il comando per saltare/non includere la sottodirectory tmp/ nel file .tar.gz.

Grazie mille in anticipo.

È stato utile?

Soluzione

Stai cercando il --exclude discussione.

--exclude=PATTERN

Alcuni utenti trovano exclude opzioni confuse.Ecco alcune trappole comuni:

  • La modalità operativa principale di tar Non agisce su un nome percorso esplicitamente elencato nella riga di comando se uno dei suoi componenti del nome del file è escluso.Nell'esempio precedente, se si crea un oggetto Archiviare ed escludere i file che terminano con *.o, ma il nome esplicito Il file dir.o/foo dopo che tutte le opzioni sono state elencate,dir.o/foo verranno esclusi dall'archivio.

  • A volte puoi confondere i significati di --exclude=PATTERN E--exclude-from=FILE-OF-PATTERNS (-X FILE-OF-PATTERNS).Essere attento:utilizzo --exclude=PATTERN quando i file da escludere sono dato come modello sulla riga di comando.Utilizzo--exclude-from=FILE-OF-PATTERNS Per introdurre il nome di un file che contiene un elenco di modelli, uno per riga;Ognuno di questi I modelli possono escludere zero, uno o molti file.

  • Quando usi --exclude=PATTERN, assicurati di citare il MODELLO parametro, quindi GNU tar vede i caratteri jolly come *.Se si desidera non farlo, la shell potrebbe espandere il file * stesso utilizzando i file a portata di mano, quindi tar potrebbe ricevere un elenco di file invece di uno modello, o nessuno, rendendo il comando in qualche modo illegale.Questo potrebbe non corrispondere a ciò che desideri.

Ad esempio, scrivi:

$ tar -c -f ARCHIVE.TAR --exclude '*.o' DIRECTORY

piuttosto che:

$ tar -c -f ARCHIVE.TAR --exclude *.o DIRECTORY
  • È necessario utilizzare la sintassi della shell o il globbing anziché regexpsintassi, quando si utilizzano le opzioni di esclusione in tar.Se provi a usareregexp Sintassi per descrivere i file da escludere, il comando potrebbe fallire.

Altri suggerimenti

tar -czpf /path/to/backups/my_backup.tar.gz --exclude path/to/images/tmp path/to/images/

Dovrebbe funzionare (supponendo tar GNU):

tar -czpf /path/to/backups/my_backup.tar.gz --exclude=tmp path/to/images/
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top