如何使用 7-zip 备份文件但排除某些目录

如何使用 7-zip 备份文件但排除某些目录

我想使用 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

我建议不要使用 7-Zip 来排除 .svn(或潜在的 _svn)文件夹,而是使用svn 导出命令(使用 svn.exeSlikSVN)将工作副本导出到临时文件夹:

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

然后删除暂存文件夹。

这就是我备份本地工作副本所做的操作。

答案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\*

得到了想要的结果。

相关内容