Gérer la rotation automatique de fichiers par script batch

Il est très fréquent de voir les administrateurs effectuer des sauvegardes de fichiers importants ou des dumps journaliers de bases de données sans y adjoindre une nécessaire rotation et purge des fichiers afin de rationnaliser la place disque et éventuellement la sauvegarde sur bande. Mettre en place une solution scriptée de rotation permet ainsi d’automatiser encore un peu plus son quotidien et d’éviter de laisser une situation s’aggraver avec des sauvegardes qui ne se font plus ou un disque qui se remplira jusqu’à ne plus avoir d’espace disponible.

Voici un exemple de dossier dans lequel aucun dump n’est purgé alors qu’en théorie, 5 jours suffiraient.

Nous allons donc mettre en place un script batch qui fera automatiquement le travail. Pour cela, nous utiliserons les commandes FORFILES et CMD. La ligne de commande suivante permet de scanner un dossier, éventuellement de filtrer par type de fichiers, puis de supprimer tout fichier supérieur à x jours.

FORFILES /p <path> /s /m *.<type> /d -<days> /c "CMD /C ERASE /F @FILE"

Pour reprendre l’exemple du répertoire avec un reliquat de sauvegardes SQL Server (.bak), nous utiliserons ce script :

FORFILES /p F:backupTESTServeurssrv-test /s /m *.bak /d -5 /c
"CMD /C ERASE /F @FILE : purge 5 jours"

A peine est-il exécuté que les dumps sont supprimés comme prévu. Ici, on a voulu filtrer les fichiers .bak et ne garder que 5 jours de sauvegarde.

Quelques informations concernant les arguments utilisés pour la commande FORFILES

  • /p : indique le chemin d’accès
  • /s : traite récursivement les sous-répertoires
  • /m *.extension : filtre les fichiers selon un masque de recherche qui est par défaut *.*
  • /d : sélectionne les fichiers dont la date de dernière modification est supérieur ou égale à + ou inférieure ou égale à –
  • /c : indique la commande à exécuter pour chaque fichier

Quelques informations concernant les arguments utilisés pour la commande CMD

  • /C : effectue la commande spécifiée entre guillemets
  • ERASE : indique l’effacement
  • /F : force la suppression de fichier(s) en lecture seule
  • @file : renvoie le nom de chaque fichier

Pour connaître tous les arguments disponibles, tapez votre commande suivie de /? ou rendez-vous sur les pages Microsoft dédiées (FORFILESCMD).

,

  1. Poster un commentaire

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :