Parcours arborescence de fichiers

Dans cet article, vous allez découvrir comment réaliser un script qui procède à un parcours récursif et automatique d’une arborescence de fichiers.

En effet, afin de sauvegarder tous les fichiers du disque dur dans une archive compressée et cryptée, nous avons 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. Un sous-répertoire est une archive. Le fichier archive est donc de taille plus petite.

Il faut gérer aussi le renommage des répertoires. Le script doit gérer dynamiquement le renommage d’un dossier.. 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,
    • Archives,
    • En_attente,
    • Important,
    • Personnel,
    • Travail,
    • Volumineux.

La taille de ces dossiers de niveau 1 est trop importante. Il faut dons faire la sauvegarde au niveau de chaque sous-dossier. 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, le script doit sauvegarder chaque sous-dossier individuellement dans une archive. Cette archive est compressée et chiffrée. La structure du nom de l’archive est dossier.sous-dossier.rar. Un disque externe stocke les sauvegardes.

Parcours récursif d’une arborescence de fichiers

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.
  • La commande FOR /f “delims=: tokens=1” %%a in (‘TYPE backup1.lst’) do (…) traite le contenu de backup1.lst.

Puis pour chaque nom présent dans backup1.lst, le script utilise la même technique 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. Notamment, celui-ci est en clair dans svg-0.01b.cmd : ce qui n’est pas prudent. Toutefois, il existe 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.

Enfin, dans le même esprit, vous trouverez un script PowerShell pour diviser un fichier vCard en sous-fichiers vCard, qui eux-mêmes peuvent être divisés en sous-fichiers, etc.

Téléchargez le fichier zip suivant, qui contient le script : SVG_V1_0_0.zip

arborescence de fichiers
arborescence de fichiers

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.