Solution de backup complète avec rotation

Voici un petit script batch (Windows) créé par mes soins qui permet de faire un backup (archivage et compression) d’un répertoire, et de faire une rotation.

Ce script n’est pas directement utilisable, vous pouvez vous en inspirer, mais il ne fonctionnera pas sans adaptation de votre part.
N’hésitez pas à me faire parvenir vos feedbacks et améliorations.

Dépendances :

  • Robocopy (intégré à Windows)
  • 7-Zip (libre à vous de changer)

Fonctionnalités :

  • Compression avec 7-Zip du répertoire donné
  • Stockage en local de l’archive
  • Stockage de l’archive sur une machine distante (copie miroir grâce à robocopy)
  • Rotation de sauvegarde (vous devez créer un fichier texte num.txt qui doit contenir 0)
  • Suppression des fichiers originaux après compression.

 

Bugs :

  • Sur certains systèmes Windows la commande date est à changer

Testé sous Windows Server 2012 R2, exécuté tous les jours grâce aux tâches planifiées

 

@echo off
REM Script créé par Matteo D'Addamio
REM v0.9
REM Sauvegarde d'un dossier, compression, archivage et rotation
REM Dépendances = ROBOCOPY / 7-Zip

REM Répertoire Source
set dir_source=
REM Répertoire de destination distant
set dir_dest_distant=
REM Répertoire de destination local
set dir_dest_local=
REM Nombre de jours de grâce (TTL)
set dtr=15
REM réglage de la date
set date_today=%date%
REM initialisation des variables pour la gestion des dates
set /p num= < %dir_source%\num.txt
set /a num_today=(%num%)+1
echo %num_today% > %dir_source%\num.txt
set /a num_dtr=%num_today%-%dtr%
REM Chemin de 7z
set path_7z=C:\"Program Files"\7-Zip\7z.exe

REM Compression de l'archive
%path_7z% a -t7z -m0=LZMA2 -mmt=on -mx9 %dir_dest_local%\"%date_today%-N%num_today%".7z %dir_source%

REM Suppression du dossier original
erase /S /Q %dir_source%\*

echo Suppression des sauvegardes plus vieilles de %dtr% jours
erase /Q %dir_dest_local%\*-N%num_dtr%.7z

echo sauvegarde de %dir_source% vers %dir_dest%
robocopy /MIR %dir_dest_local% %dir_dest_distant%

echo FIN
exit

 

Laisser un commentaire

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