Frage

Szenario: Ich habe ein Verzeichnis auf einem Server, auf meine Website hostet, die Hunderte von Benutzern übermittelten Bilder enthält. Ich erstelle ein Backup-Skript, das alle Bilder aus dem Verzeichnis nimmt und komprimiert sie in eine tar.gz-Datei. Der Befehl, den ich bisher habe, ist:
tar -czpf /path/to/backups/my_backup.tar.gz path / to / images /
Problem: Nein in meinem path / to / images / Ich habe ein Verzeichnis tmp / genannt. Wenn ich den Befehl ausführen, erhalte ich eine tar.gz-Datei in dem Pfad alle das Bild enthalten ist / zu / images / Verzeichnis und ein Unterverzeichnis tmp / genannt.
. Frage: Wie kann ich den Befehl erhalten, das tmp / Unterverzeichnis in der tar.gz-Datei überspringen / nicht enthält

Dank einer Million im Voraus.

War es hilfreich?

Lösung

Sie suchen nach dem --exclude Argumente.

--exclude=PATTERN

Einige Benutzer finden exclude Optionen verwirrend. Hier sind einige typische Fehler:

  • Der Haupt Betriebsart tar wirken sich nicht auf einen Pfadnamen explizit auf der Kommandozeile angezeigt, wenn einer ihrer Dateinamen Komponenten ausgeschlossen. In dem obigen Beispiel erstellen, wenn Sie eine Archiv- und Ausschließen von Dateien, die mit *.o beenden, aber explizit nennen die Datei dir.o/foo nachdem alle Optionen aufgelistet wurden, dir.o/foo wird aus dem Archiv ausgeschlossen werden.

  • Sie können manchmal die Bedeutung von --exclude=PATTERN verwirren und --exclude-from=FILE-OF-PATTERNS (-X FILE-OF-PATTERNS). Sein Achtung: Verwendung --exclude=PATTERN wenn Dateien ausgeschlossen werden sollen als ein Muster auf der Befehlszeile angegeben. Verwenden --exclude-from=FILE-OF-PATTERNS den Namen einer Datei einführen Welche enthält eine Liste von Mustern, eine pro Zeile; jedes von diesen Muster können Null, eine oder mehrere Dateien ausschließen.

  • Wenn Sie --exclude=PATTERN benutzen, müssen Sie das Muster zitieren Parameter, so GNU tar sieht Wildcard-Zeichen wie *. Wenn du dies nicht tun, könnte die Shell erweitert die * selbst Dateien mit bei der Hand, könnte so tar eine Liste von Dateien erhalten statt einer Muster, oder gar nicht, so dass der Befehl etwas illegal. Dies könnte nicht dem entsprechen, was Sie wollen.

Zum Beispiel schreiben:

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

statt:

$ tar -c -f ARCHIVE.TAR --exclude *.o DIRECTORY
  • Sie müssen verwenden Shell-Syntax oder Globbing, anstatt regexp verwenden Syntax, wenn Optionen in tar ausschließen verwenden. Wenn Sie versuchen, zu verwenden, regexp Syntaxdateien zu beschreiben ausgeschlossen werden, Ihr Befehl scheitern könnte.

Andere Tipps

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

Das sollte funktionieren (GNU tar vorausgesetzt):

tar -czpf /path/to/backups/my_backup.tar.gz --exclude=tmp path/to/images/
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top