Я хотел бы использовать 7-zip для резервного копирования каталога, но я бы хотел исключить все каталоги с именем ".svn" (в любом месте дерева исходных текстов). Кто-нибудь знает, возможно ли это и в таком случае как?
6 ответов
Чтобы исключить все каталоги .svn, вам нужно добавить -xr!?svn\*
switch
Например, следующее создаст резервную копию каталога C:\Project\To\Backup
исключая любые папки, которые удовлетворяют ?svn
:
"C:\Program Files\7-Zip\7z.exe" a -r -tzip -y -xr!?svn\* Project.zip C:\Project\To\Backup\*
Вместо того, чтобы использовать 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
Затем удалите промежуточную папку.
Это то, что я делаю для резервного копирования моих локальных рабочих копий.
Вы можете исключить файлы с помощью 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.
Когда я использовал
"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\*
получил желаемый результат.
Когда я использовал
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\*
Получил желаемый результат.
Для меня я пытался сделать резервную копию нескольких каталогов maven-кода и хотел исключить любой каталог с именем "target":
"C:\Program Files\7-Zip\7z.exe" a -r -tzip -y -xr!*\target\* site.zip C:\code\site\
Соответствующий параметр исключения был -xr!*\target\*
.