我想使用7-zip备份目录,但是我想排除所有名为“ .svn”的目录(在源树中的任何位置)。有人知道这是否可行吗?
我想使用7-zip备份目录,但是我想排除所有名为“ .svn”的目录(在源树中的任何位置)。有人知道这是否可行吗?
Answers:
要排除所有.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\*
?
它与“ period-svn”(.svn
)匹配,因此要跳过文件夹中的所有内容,SkipMe
请使用-xr!SkipMe\*
我建议不要使用7-Zip来排除.svn(或可能是_svn)文件夹,而是建议使用svn export命令(使用SlikSVN中的svn.exe)将工作副本导出到临时文件夹:
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个排除文件列表,一个用于绝对排除,一个用于递归排除。上面的内容来自在cygwin中运行的bash脚本。
当我使用
"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目录。在目录名称前添加星号
7z a "D:\codebase\w.7z" "D:\codebase\Edison\otm\Webapp" -t7z -mx0 -xr!*WEB-INF\*
得到了想要的结果。