Parcours récursif d’une arborescence de fichiers en batch

Afin de sauvegarder tous les fichiers du disque dur dans une archive compressée et cryptée, j’ai développé un programme en batch qui utilise la ligne de commande de WINRAR. Il fonctionne très bien, toutefois j’ai rencontré deux soucis.

Le premier problème, c’est la taille des données qui augmente sans cesse. Faire une unique sauvegarde de la totalité des données n’est pas pratique lors des restaurations. Les sauvegardes sont donc faites par sous-répertoires afin d’obtenir des archives de taille plus petite.

L’autre problème survient lorsque les répertoires sont renommés. Il n’était pas possible de modifier le script à chaque fois qu’un des répertoires était renommé. Aussi le script procède à un parcours récursif des répertoires afin de découvrir automatiquement le nom des dossiers.

Le parcours récursif est actuellement sur deux niveaux, mais il est possible d’ajouter des niveaux supplémentaires sans difficulté.

Prenons un exemple. Les données à sauvegarder sont stockées dans une arborescence de quelques dossiers sur un lecteur Q:

Les dossiers du niveau 1 sont, par exemple:

  • A_faire,
  • En_attente,
  • Archives,
  • Important,
  • Personnel,
  • Travail,
  • Volumineux.

La taille de ces dossiers de niveau 1 étant trop importante, la sauvegarde est faite au niveau des sous-dossiers. Les sous-dossiers, comme les dossiers, n’ont pas d’espace dans leur nom: présence d’un tiret (« -« ) ou d’un underscore (« _ ») à la place de l’espace.

Aussi, chaque sous-dossier est sauvegardé individuellement dans une archive compressée et cryptée. Le nom du fichier compressé est composé de la façon suivante: dossier.sous-dossier.rar. Les sauvegardes sont stockées sur un disque externe.

Le principe de fonctionnement est le suivant :

  • La liste des dossiers de Q: est stockée dans le fichier backup1.lst, grâce à la commande dir Q: /b > backup1.lst.
  • Le résultat stocké dans backup1.lst est exploité grâce à la commande FOR /f « delims=: tokens=1 » %%a in (‘TYPE backup1.lst’) do (…).

Puis pour chaque nom présent dans backup1.lst, la même technique est utilisée pour produire un fichier backup2.lst qui contient la liste des sous-dossiers:

  • dir Q:%%a /b > backup2.lst
  • FOR /f « delims=: tokens=1 » %%b in (‘TYPE backup2.lst‘) do call svg-0.01b.cmd %%a %%b

Le programme svg-0.01b.cmd se charge de la compression.

Une remarque sur le mot de passe. Celui-ci est en clair dans svg-0.01b.cmd: ce qui peut sembler imprudent. Il serait possible de le saisir à chaque fois mais avec 84 archives cryptées, cela deviendrait assez pénible. Il existe aussi des techniques assez simple pour le lire à partir d’un fichier texte qui serait sur un emplacement sécurisé, mais finalement ça ne ferait que déplacer le problème.

En fait, ces fichiers batch sont stockés dans un volume crypté par TrueCrypt.

Ce logiciel gratuit est un des produits qualifiés de l’ANSSI pour protéger le poste de travail. TrueCrypt est une solution logicielle de chiffrement des données. Cela permet de réduire le risque en cas de vol du matériel car les données sont protégées à l’intérieur d’un ou plusieurs volumes TrueCrypt chiffrés.

SVG_V1_0_0.zip

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *