Me gustaría usar 7-zip para hacer una copia de seguridad de un directorio, pero me gustaría que excluyera todos los directorios llamados ".svn" (en cualquier parte del árbol de origen). ¿Alguien sabe si esto es posible y en ese caso cómo?
Me gustaría usar 7-zip para hacer una copia de seguridad de un directorio, pero me gustaría que excluyera todos los directorios llamados ".svn" (en cualquier parte del árbol de origen). ¿Alguien sabe si esto es posible y en ese caso cómo?
Respuestas:
Para excluir todos los directorios .svn, debe agregar el -xr!?svn\*
modificador
Por ejemplo, lo siguiente creará una copia de seguridad del C:\Project\To\Backup
directorio 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\*
?
debe coincidir con "period-svn" ( .svn
), para omitir todo en la carpeta SkipMe
que usaría-xr!SkipMe\*
En lugar de usar 7-Zip para excluir las carpetas .svn (o potencialmente _svn), recomendaría usar el comando svn export (use svn.exe de 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
Luego elimine la carpeta de ensayo.
Esto es lo que hago para hacer una copia de seguridad de mis copias de trabajo locales.
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 \
'-xr@\path\to\backup_daily_exclude.lst'
El archivo de exclusión se ve así:
home\Photos\iPod*
home\dhltd\*
BlogMatrix\Sparks\db\*.archive
home\eclipse\*
.svn
La clave es -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 exclusiones absolutas y otra para exclusiones recursivas. Lo anterior es de un script bash que se ejecuta en cygwin.
Cuando solia
"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\*
Obtuve el resultado deseado.
Cuando solia
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 del directorio
7z a "D:\codebase\w.7z" "D:\codebase\Edison\otm\Webapp" -t7z -mx0 -xr!*WEB-INF\*
Obtuve el resultado deseado.
Para mí, estaba tratando de hacer una copia de seguridad de un montón de directorios de código maven y quería excluir cualquier directorio llamado "objetivo":
"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 fue -xr!*\target\*
.