Gostaria de usar o 7-zip para fazer backup de um diretório, mas gostaria que ele excluísse todos os diretórios denominados ".svn" (em qualquer lugar da árvore de origem). Alguém sabe se isso é possível e, nesse caso, como?
Gostaria de usar o 7-zip para fazer backup de um diretório, mas gostaria que ele excluísse todos os diretórios denominados ".svn" (em qualquer lugar da árvore de origem). Alguém sabe se isso é possível e, nesse caso, como?
Respostas:
Para excluir todos os diretórios .svn, você precisa adicionar a -xr!?svn\*
opção
Por exemplo, o seguinte criará um backup do C:\Project\To\Backup
diretório, excluindo as pastas que atendem ?svn
:
"C:\Program Files\7-Zip\7z.exe" a -r -tzip -y -xr!?svn\* Project.zip C:\Project\To\Backup\*
?
é para corresponder "período de svn" ( .svn
), de modo a pular tudo na pasta SkipMe
que você usaria-xr!SkipMe\*
Em vez de usar o 7-Zip para excluir as pastas .svn (ou potencialmente _svn), eu recomendaria o uso do comando svn export (use svn.exe do SlikSVN ) para exportar a cópia de trabalho para uma pasta temporária:
svn export C:\Path\To\WC C:\Backup\Staging
Em seguida, use o 7-Zip da seguinte maneira:
7z.exe a "C:\Parth\To\Archive" "C:\Backup\Staging\*" -bd t7z -v2g -r
Em seguida, exclua a pasta de teste.
É isso que faço para fazer backup de minhas cópias de trabalho locais.
Você pode excluir arquivos com o 7zip usando uma lista de arquivos ou diretórios:
/path/to7Zip/7z a -bd f:/backup/backup_2009-08-23_daily.zip home \
'-xr@\path\to\backup_daily_exclude.lst'
O arquivo de exclusão se parece com:
home\Photos\iPod*
home\dhltd\*
BlogMatrix\Sparks\db\*.archive
home\eclipse\*
.svn
A chave é o -xr e, em particular, o "r" que indica aplicar a lista de exclusões recursivamente, a cada nível do diretório. Você pode usar 2 listas de arquivos de exclusão, uma para exclusões absolutas e outra para exclusões recursivas. O texto acima é de um script bash que roda em cygwin.
Quando eu usei
"C:\Program Files\7-Zip\7z.exe" a -r -ttar -xr!?git\* aufs2-util.tar aufs2-util\*
acabou adicionando o diretório .git que eu não queria, mudando para
"C:\Program Files\7-Zip\7z.exe" a -r -ttar -xr!?git\ aufs2-util.tar aufs2-util\*
obteve o resultado desejado.
Quando eu usei
7z a "D:\codebase\w.7z" "D:\codebase\Edison\otm\Webapp" -t7z -mx0 -xr!WEB-INF\*
o diretório WEB-INF não foi excluído. Adicionando um asterisco antes do nome do diretório
7z a "D:\codebase\w.7z" "D:\codebase\Edison\otm\Webapp" -t7z -mx0 -xr!*WEB-INF\*
Obteve o resultado desejado.