Wie verwende ich 7-zip, um Dateien zu sichern, aber einige Verzeichnisse auszuschließen?

43

Ich möchte 7-zip zum Sichern eines Verzeichnisses verwenden, möchte jedoch alle Verzeichnisse mit dem Namen ".svn" (an einer beliebigen Stelle im Quelltextbaum) ausschließen. Weiß jemand, ob und wie dies möglich ist?

Mikael Sundberg
quelle

Antworten:

35

Um alle .svn-Verzeichnisse auszuschließen, müssen Sie den -xr!?svn\*Schalter hinzufügen

Das Folgende erstellt beispielsweise eine Sicherungskopie des C:\Project\To\BackupVerzeichnisses mit Ausnahme aller zufriedenstellenden Ordner ?svn:

"C:\Program Files\7-Zip\7z.exe" a -r -tzip -y -xr!?svn\* Project.zip C:\Project\To\Backup\*
ManiacD
quelle
Dank ManiacD, aber ich kann bekommen dies nicht zur Arbeit -xr svn * gibt mir einen Fehler , und wenn ich versuche , -xr .svn * es wird immer noch nicht ausschließen .svn!?!
Mikael Sundberg
Sie benötigen einen Backslash nach? svn, damit dies funktioniert. Dies bedeutet, dass alles unter dem .svn-Verzeichnis ausgeschlossen wird. -xr!? svn \ *
ManiacD
Keine Sorge, ich hatte eine Menge Probleme damit, dass es anfänglich auch funktioniert. Der 7-zip-Schalter -x (-xr recurse directory) mit ausschließen! Schließt Dateinamen aus, die auf einer Platzhaltersuche basieren. Ohne den umgekehrten Schrägstrich wird versucht, Dateinamen auszuschließen, die mit "svn *" übereinstimmen. asvn.log mit dem \ * am Ende bedeutet, dass unter einem Verzeichnis, das mit? svn
ManiacD 23.08.09
Weitere Informationen zur Verwendung von Platzhaltern finden Sie in der mit 7-Zip gelieferten Hilfedatei. Hat mir vor ein paar Tagen geholfen, eine ähnliche Aufgabe zu lösen. 7-Zip verwendet Wildcards ein bisschen ... anders;)
Släcker
3
Und wenn Sie hier auf der Suche nach einem allgemeinen Ausschluss von ?.svnSkipMe-xr!SkipMe\*
Ordnern
13

Anstatt 7-Zip zum Ausschließen der Ordner .svn (oder möglicherweise _svn) zu verwenden, würde ich empfehlen, den Befehl svn export (verwenden Sie svn.exe von SlikSVN ) zu verwenden, um die Arbeitskopie in einen temporären Ordner zu exportieren:

svn export C:\Path\To\WC C:\Backup\Staging

Dann benutze 7-Zip wie folgt:

7z.exe a "C:\Parth\To\Archive" "C:\Backup\Staging\*" -bd t7z -v2g -r

Löschen Sie dann den Staging-Ordner.

Das ist, was ich mache, um meine lokalen Arbeitskopien zu sichern.

Richard Slater
quelle
Danke für den Exporttipp. Verfügbar auch im TortoiseSVN-Menü.
Arnold Spence
12

Sie können Dateien mit 7zip über eine Liste von Dateien oder Verzeichnissen ausschließen:

/path/to7Zip/7z a -bd f:/backup/backup_2009-08-23_daily.zip home \
          '-xr@\path\to\backup_daily_exclude.lst'

Die Ausschlussdatei sieht folgendermaßen aus:

home\Photos\iPod*
home\dhltd\*
BlogMatrix\Sparks\db\*.archive
home\eclipse\*
.svn

Der Schlüssel ist das -xr und insbesondere das "r", das angibt, dass die Ausschlussliste rekursiv auf jede Ebene des Verzeichnisses angewendet wird. Möglicherweise möchten Sie zwei Ausschlussdateilisten verwenden, eine für absolute und eine für rekursive Ausschlüsse. Das obige stammt aus einem Bash-Skript, das in Cygwin ausgeführt wird.

Tim Desjardins
quelle
4

Als ich benutzt habe

"C:\Program Files\7-Zip\7z.exe" a -r -ttar -xr!?git\* aufs2-util.tar aufs2-util\*

Es endete damit, das .git-Verzeichnis hinzuzufügen, das ich nicht wollte, und es in zu ändern

"C:\Program Files\7-Zip\7z.exe" a -r -ttar -xr!?git\ aufs2-util.tar aufs2-util\*

habe das gewünschte Ergebnis.


quelle
3

Als ich benutzt habe

7z a "D:\codebase\w.7z" "D:\codebase\Edison\otm\Webapp" -t7z -mx0 -xr!WEB-INF\*

Das WEB-INF-Verzeichnis wurde nicht ausgeschlossen. Hinzufügen eines Sternchens vor dem Verzeichnisnamen

7z a "D:\codebase\w.7z" "D:\codebase\Edison\otm\Webapp" -t7z -mx0 -xr!*WEB-INF\*

Habe das gewünschte Ergebnis.

Ashutosh Jindal
quelle
das asterisk teil ist das wichtigste. Dies sollte mehr Gegenstimmen bekommen.
Valerio
0

Ich habe versucht, eine Reihe von Maven-Code-Verzeichnissen zu sichern und wollte jedes Verzeichnis mit dem Namen "target" ausschließen:

"C:\Program Files\7-Zip\7z.exe" a -r -tzip -y -xr!*\target\* site.zip C:\code\site\

Relevanter Ausschlussparameter war -xr!*\target\*.

Kit Menke
quelle