Comment utiliser 7-zip pour sauvegarder des fichiers, mais exclure certains répertoires

43

J'aimerais utiliser 7-zip pour sauvegarder un répertoire, mais j'aimerais qu'il exclue tous les répertoires nommés ".svn" (n'importe où dans l'arborescence des sources). Est-ce que quelqu'un sait si c'est possible et dans ce cas comment?

Mikael Sundberg
la source

Réponses:

35

Pour exclure tous les répertoires .svn, vous devez ajouter le -xr!?svn\*commutateur.

Par exemple, ce qui suit va créer une sauvegarde du C:\Project\To\Backuprépertoire en excluant tout dossier satisfaisant ?svn:

"C:\Program Files\7-Zip\7z.exe" a -r -tzip -y -xr!?svn\* Project.zip C:\Project\To\Backup\*
ManiacD
la source
Merci ManiacD, mais je n'arrive pas à obtenir que cela fonctionne -xr!? Svn * me donne une erreur et si j'essaie -xr! .Svn *, il n'exclura toujours pas .svn
Mikael Sundberg
vous avez besoin d'une barre oblique inverse après? svn pour que cela fonctionne, ce qui signifie d'exclure tout ce qui se trouve sous le répertoire .svn. -xr!? svn \ *
ManiacD
Ne vous inquiétez pas, j'ai eu beaucoup de problèmes au début pour que cela fonctionne également. Le commutateur d'exclusion 7-zip -x (-xr recurse directory) avec! exclut les noms de fichiers basés sur une recherche générique. Sans la barre oblique inverse, il tente d'exclure les noms de fichiers qui correspondent à? Svn * ie. asvn.log avec le \ * à la fin signifie ne rien inclure sous un répertoire correspondant? svn
ManiacD
Pour plus d'informations sur l'utilisation des caractères génériques, consultez le fichier d'aide fourni avec 7-Zip. M'a aidé à résoudre une tâche similaire il y a quelques jours. 7-Zip utilise des caractères génériques un peu ... différents;)
släcker 23/08/2009
3
Et si vous avez trébuché ici à la recherche d'une exclusion de dossier générale, notez que cela ?doit correspondre à "period-svn" ( .svn), afin de sauter tout le dossier que SkipMevous utiliseriez-xr!SkipMe\*
drzaus
13

Au lieu d'utiliser 7-Zip pour exclure les dossiers .svn (ou potentiellement _svn), je vous recommande d'utiliser la commande svn export (utilisez svn.exe de SlikSVN ) pour exporter la copie de travail dans un dossier temporaire:

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

Ensuite, utilisez 7-Zip comme suit:

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

Supprimez ensuite le dossier intermédiaire.

C'est ce que je fais pour sauvegarder mes copies de travail locales.

Richard Slater
la source
Merci pour le conseil d'exportation. Disponible sur le menu TortoiseSVN aussi.
Arnold Spence
12

Vous pouvez exclure des fichiers avec 7zip en utilisant une liste de fichiers ou de répertoires:

/path/to7Zip/7z a -bd f:/backup/backup_2009-08-23_daily.zip home \
          '-xr@\path\to\backup_daily_exclude.lst'

Le fichier d'exclusion ressemble à:

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

La clé est le -xr et en particulier le "r" qui indique que la liste d'exclusion doit être appliquée de manière récursive à chaque niveau du répertoire. Vous pouvez utiliser deux listes de fichiers exclus, une pour les exclusions absolues et une pour les exclusions récursives. Ce qui précède provient d’un script bash qui s’exécute en cygwin.

Tim Desjardins
la source
4

Quand j'ai utilisé

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

il a fini par ajouter le répertoire .git que je ne voulais pas, le changer en

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

obtenu le résultat souhaité.


la source
3

Quand j'ai utilisé

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

le répertoire WEB-INF n'a pas été exclu. Ajout d'un astérisque avant le nom du répertoire

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

Vous avez le résultat souhaité.

Ashutosh Jindal
la source
la partie astérisque est la plus importante. Cela devrait avoir plus de votes positifs.
Valerio
0

Pour moi, j'essayais de sauvegarder un tas de répertoires de code maven et je voulais exclure tout répertoire nommé "cible":

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

Le paramètre d'exclusion pertinent était -xr!*\target\*.

Kit Menke
la source