it-swarm.dev

¿Cómo uso 7-Zip para hacer copias de seguridad de archivos, pero excluir algunos directorios?

Me gustaría usar 7-Zip para hacer una copia de seguridad de un directorio, pero me gustaría que excluya todos los directorios llamados ".svn" (en cualquier parte del árbol de origen). ¿Alguien sabe si esto es posible y en ese caso cómo?

43
Mikael Sundberg

Para excluir todos los directorios .svn, debe agregar el conmutador -xr!?svn\*

Por ejemplo, lo siguiente creará una copia de seguridad del directorio C:\Project\To\Backup excluyendo cualquier carpeta que satisfaga ?svn:

"C:\Program Files\7-Zip\7z.exe" a -r -tzip -y -xr!?svn\* Project.Zip C:\Project\To\Backup\*
35
ManiacD

En lugar de usar 7-Zip para excluir las carpetas .svn (o potencialmente _svn), recomendaría usar el comando svn export (use svn.exe desde SlikSVN ) para exportar la copia de trabajo a una carpeta temporal:

svn export C:\Path\To\WC C:\Backup\Staging

Luego use 7-Zip de la siguiente manera:

7z.exe a "C:\Parth\To\Archive" "C:\Backup\Staging\*" -bd t7z -v2g -r

A continuación, elimine la carpeta de ensayo.

Esto es lo que hago para hacer copias de seguridad de mis copias de trabajo locales.

13
Richard Slater

Puede excluir archivos con 7Zip usando una lista de archivos o directorios:

/path/to7Zip/7z a -bd f:/backup/backup_2009-08-23_daily.Zip home \
          '[email protected]\path\to\backup_daily_exclude.lst'

El archivo de exclusión se ve como:

home\Photos\iPod*
home\dhltd\*
BlogMatrix\Sparks\db\*.archive
home\Eclipse\*
.svn

La clave es la -xr y, en particular, la "r" que indica aplicar la lista de exclusión de forma recursiva, a cada nivel del directorio. Es posible que desee utilizar 2 listas de archivos de exclusión, una para las exclusiones absolutas y otra para las exclusiones recursivas. Lo anterior es de un script bash que se ejecuta en cygwin.

12
Tim Desjardins

Cuando utilicé

"C:\Program Files\7-Zip\7z.exe" a -r -ttar -xr!?git\* aufs2-util.tar aufs2-util\*

terminó agregando el directorio .git que no quería, cambiándolo a

"C:\Program Files\7-Zip\7z.exe" a -r -ttar -xr!?git\ aufs2-util.tar aufs2-util\*

conseguí el resultado deseado.

4
user28989

Cuando utilicé

7z a "D:\codebase\w.7z" "D:\codebase\Edison\otm\Webapp" -t7z -mx0 -xr!WEB-INF\*

el directorio WEB-INF no fue excluido. Agregar un asterisco antes del nombre de directorio

7z a "D:\codebase\w.7z" "D:\codebase\Edison\otm\Webapp" -t7z -mx0 -xr!*WEB-INF\*

Conseguí el resultado deseado.

3
Ashutosh Jindal

Para mí, estaba intentando hacer una copia de seguridad de un montón de directorios de código de Maven y quería excluir cualquier directorio llamado "destino":

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

El parámetro de exclusión relevante era -xr!*\target\*.

0
Kit Menke