Как использовать 7-zip для резервного копирования файлов, но исключить некоторые каталоги

59677
Mikael Sundberg

Я хотел бы использовать 7-zip для резервного копирования каталога, но я бы хотел исключить все каталоги с именем ".svn" (в любом месте дерева исходных текстов). Кто-нибудь знает, возможно ли это и в таком случае как?

43

6 ответов на вопрос

35
ManiacD

Чтобы исключить все .svn каталоги, вам нужно добавить -xr!?svn\*переключатель

Например, следующее создаст резервную копию C:\Project\To\Backupкаталога, исключая любые папки, которые удовлетворяют ?svn:

"C:\Program Files\7-Zip\7z.exe" a -r -tzip -y -xr!?svn\* Project.zip C:\Project\To\Backup\* 
Спасибо ManiacD, но я не могу заставить это работать -xr!? Svn \ * выдает мне ошибку, и если я попробую -xr! .Svn \ *, она все равно не исключит .svn Mikael Sundberg 14 лет назад 0
вам нужна обратная косая черта после? svn, чтобы она работала, что означает исключение всего, что находится в каталоге .svn. -xr!? СВН \\ * ManiacD 14 лет назад 0
Не волнуйтесь, у меня изначально было много проблем, чтобы заставить его работать. Ключ 7-zip exclude -x (каталог -xr recurse) с! исключает имена файлов на основе поиска по шаблону. Без обратной косой черты он пытается исключить имена файлов, которые соответствуют? Svn * т.е. asvn.log с символом \\ * в конце означает, что ничего не находится под соответствующим каталогом? svn ManiacD 14 лет назад 0
Подробнее о том, как использовать подстановочные знаки, смотрите в файле справки, поставляемом с 7-Zip. Помог мне исправить подобное задание несколько дней назад. 7-Zip использует шаблоны немного ... разные;) släcker 14 лет назад 0
Я получил его на работу, странно, что этот ответ в настоящее время является единственным, который не был проголосован. +1 и принято. Спасибо всем, кто ответил на мой вопрос. Mikael Sundberg 14 лет назад 0
И если вы наткнулись здесь на общее исключение папок, обратите внимание, что `?` Должен соответствовать "period-svn" (`.svn`), поэтому, чтобы пропустить все в папке` SkipMe`, вы должны использовать `-xr! SkipMe \ * ` drzaus 10 лет назад 3
13
Richard Slater

Вместо того, чтобы использовать 7-Zip для исключения папок .svn (или, возможно, _svn), я бы рекомендовал использовать команду экспорта svn (используйте svn.exe из SlikSVN ) для экспорта рабочей копии во временную папку:

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

Затем используйте 7-Zip следующим образом:

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

Затем удалите промежуточную папку.

Это то, что я делаю для резервного копирования моих локальных рабочих копий.

Спасибо за совет по экспорту. Доступно также в меню TortoiseSVN. Arnold Spence 13 лет назад 0
12
Tim Desjardins

Вы можете исключить файлы с помощью 7zip, используя список файлов или каталогов:

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

Файл исключения выглядит так:

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

Ключом является -xr и, в частности, «r», который указывает рекурсивное применение списка исключений к каждому уровню каталога. Вы можете использовать 2 списка исключаемых файлов: один для абсолютных и один для рекурсивных исключений. Выше приведен скрипт bash, который запускается в cygwin.

4

Когда я использовал

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

в итоге он добавил каталог .git, который я не хотел, изменив его на

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

получил желаемый результат.

3
Ashutosh Jindal

Когда я использовал

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

каталог WEB-INF не был исключен. Добавление звездочки перед именем dir

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

Получил желаемый результат.

звездочка часть самая важная. Это должно получить больше голосов. colthreepv 5 лет назад 0
0
Kit Menke

Для меня я пытался сделать резервную копию нескольких каталогов maven-кода и хотел исключить любой каталог с именем «target»:

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

Соответствующий параметр исключения был -xr!*\target\*.