Jak korzystać z 7-zip do tworzenia kopii zapasowych plików, ale wyklucz niektóre katalogi

43

Chciałbym użyć 7-zip do utworzenia kopii zapasowej katalogu, ale chciałbym, aby wykluczył wszystkie katalogi o nazwie „.svn” (w dowolnym miejscu w drzewie źródłowym). Czy ktoś wie, czy jest to możliwe, a w takim razie jak?

Mikael Sundberg
źródło

Odpowiedzi:

35

Aby wykluczyć wszystkie katalogi .svn, musisz dodać -xr!?svn\*przełącznik

Na przykład następujące czynności utworzą kopię zapasową C:\Project\To\Backupkatalogu z wyłączeniem folderów, które spełniają ?svn:

"C:\Program Files\7-Zip\7z.exe" a -r -tzip -y -xr!?svn\* Project.zip C:\Project\To\Backup\*
ManiacD
źródło
Dzięki ManiacD, ale nie mogę tego uruchomić. -Xr!? Svn * daje mi błąd, a jeśli spróbuję -xr! .Svn * to nadal nie wyklucza .svn
Mikael Sundberg
potrzebujesz backslash po? svn, aby działał, co oznacza wykluczenie wszystkiego pod katalogiem .svn. -xr!? svn \ *
ManiacD
Nie martw się, miałem też mnóstwo problemów, które początkowo sprawiły, że działało. 7-zip wyklucza przełącznik -x (katalog rekurencyjny -xr) z! wyklucza nazwy plików oparte na wyszukiwaniu symboli wieloznacznych. Bez ukośnika stara się wykluczyć nazwy plików pasujące do? Svn * tj. asvn.log z \ * na końcu oznacza, że ​​nie zawiera niczego pod pasującym katalogiem? svn
ManiacD
Szczegółowe informacje na temat używania symboli wieloznacznych można znaleźć w pliku pomocy dostarczonym z 7-Zip. Pomógł mi naprawić podobne zadanie kilka dni temu. 7-Zip używa symboli wieloznacznych trochę ... inaczej;)
släcker
3
A jeśli natknąłeś się tutaj, szukając ogólnego wyłączenia folderów, zwróć uwagę, że ?jest to dopasowanie do „period-svn” ( .svn), aby pominąć wszystko w folderze, SkipMektórego byś użył-xr!SkipMe\*
drzaus
13

Zamiast używać 7-Zip do wykluczenia folderów .svn (lub potencjalnie _svn), zaleciłbym użycie polecenia svn export (użyj svn.exe z SlikSVN ), aby wyeksportować kopię roboczą do folderu tymczasowego:

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

Następnie użyj 7-Zip w następujący sposób:

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

Następnie usuń folder pomostowy.

Tak robię, aby wykonać kopię zapasową lokalnych kopii roboczych.

Richard Slater
źródło
Dzięki za wskazówkę dotyczącą eksportu. Dostępne również w menu TortoiseSVN.
Arnold Spence
12

Możesz wykluczyć pliki za pomocą 7zip przy użyciu listy plików lub katalogów:

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

Plik wykluczenia wygląda następująco:

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

Kluczem jest -xr, aw szczególności „r”, który wskazuje, że rekursywnie stosuje listę wykluczeń na każdym poziomie katalogu. Możesz użyć 2 list wykluczeń plików, jednej dla absolutnej i jednej dla wykluczeń rekurencyjnych. Powyższe pochodzi ze skryptu bash, który działa w cygwin.

Tim Desjardins
źródło
4

Kiedy użyłem

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

w końcu dodałem katalog .git, którego nie chciałem, zmieniając go na

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

uzyskać pożądany wynik.


źródło
3

Kiedy użyłem

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

katalog WEB-INF nie został wykluczony. Dodanie gwiazdki przed nazwą katalogu

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

Mam pożądany wynik.

Ashutosh Jindal
źródło
najważniejsza jest część gwiazdki. To powinno uzyskać więcej głosów pozytywnych.
Valerio
0

Dla mnie próbowałem wykonać kopię zapasową kilku katalogów kodów maven i chciałem wykluczyć dowolny katalog o nazwie „target”:

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

Istotnym parametrem wykluczenia było -xr!*\target\*.

Kit Menke
źródło