我想使用 7-zip 备份目录,但我希望它排除所有名为“.svn”的目录(源树中的任何地方)。有人知道这是否可行,如果可行,该怎么做?
答案1
要排除所有 .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\*
答案2
答案3
您可以使用文件或目录列表来排除 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 个排除文件列表,一个用于绝对排除,一个用于递归排除。以上内容来自在 cygwin 中运行的 bash 脚本。
答案4
当我使用
7z a "D:\codebase\w.7z" "D:\codebase\Edison\otm\Webapp" -t7z -mx0 -xr!WEB-INF\*
WEB-INF 目录未被排除。在目录名称前添加星号
7z a "D:\codebase\w.7z" "D:\codebase\Edison\otm\Webapp" -t7z -mx0 -xr!*WEB-INF\*
得到了想要的结果。