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?

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

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.


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.


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.


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.


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\*.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.