Como uso o 7-zip para fazer backup de arquivos, mas excluir alguns diretórios

43

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?

Mikael Sundberg
fonte

Respostas:

35

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\Backupdiretó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\*
ManiacD
fonte
Graças ManiacD, mas eu não posso chegar a este XR trabalho svn * me dá um erro e se eu tentar XR .svn * ainda não excluirá .svn!?!
Mikael Sundberg
você precisa de uma barra invertida após? svn para que funcione, o que significa excluir tudo abaixo do diretório .svn. -xr!? svn \ *
ManiacD 23/08/2009
Não se preocupe, eu tive muitos problemas para fazê-lo funcionar também. O 7-zip exclui a opção -x (diretório -xr recurse) com! exclui nomes de arquivos com base em uma pesquisa curinga. Sem a barra invertida, ele está tentando excluir nomes de arquivos que correspondem a? Svn * ou seja. asvn.log com o \ * na média final não incluir qualquer coisa debaixo de uma correspondência diretório svn?
ManiacD
Para obter detalhes sobre como usar curingas, consulte o arquivo de ajuda enviado com o 7-Zip. Ajudou-me a resolver uma tarefa semelhante há alguns dias. 7-Zip utiliza caracteres universais um pouco ... diferente;)
Slacker
3
E se você tropeçou aqui à procura de exclusão pasta geral, nota que o ?é para corresponder "período de svn" ( .svn), de modo a pular tudo na pasta SkipMeque você usaria-xr!SkipMe\*
drzaus
13

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.

Richard Slater
fonte
Obrigado pela dica de exportação. Disponível também no menu TortoiseSVN.
Arnold Spence
12

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.

Tim Desjardins
fonte
4

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.


fonte
3

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.

Ashutosh Jindal
fonte
parte do asterisco é a mais importante. Isso deve receber mais votos.
Valério
0

Para mim, eu estava tentando fazer backup de vários diretórios de código automatizado e queria excluir qualquer diretório chamado "target":

"C:\Program Files\7-Zip\7z.exe" a -r -tzip -y -xr!*\target\* site.zip C:\code\site\

O parâmetro de exclusão relevante era -xr!*\target\*.

Kit Menke
fonte