Sauvegarde par batch sous Windows

Au lieu d'avoir recours à un outil lourd à utiliser, une sauvegarde est réalisable par le biais d'un traitement par lots. Une méthode qui assure un contrôle total du processus et permet d'ajouter / supprimer rapidement des fichiers.

L'utilisation de logiciels de sauvegarde est parfois problématique, la mise en place est souvent lourde et la maîtrise absolue de l'outil est nécessaire afin d'être sûr que l'on sauvegarde exactement ce que l'on souhaite quand on le souhaite et comme on le souhaite.

Dans certains cas, mieux vaut privilégier l'utilisation de scripts batch qui assurent un contrôle total du processus de sauvegarde et surtout, la possibilité d'ajouter/supprimer rapidement des fichiers à sauvegarder. Je vous livre donc ici quelques conseils et outils indispensables pour effectuer correctement des sauvegardes.

Découper les batchs

Si vous souhaitez pouvoir étendre ou modifier facilement votre processus de sauvegarde, je vous conseille vivement de créer plusieurs batchs pour chaque composant du système de sauvegarde. Un batch pour la compression, un batch pour l'envoi de fichiers sur le FTP, etc. Ainsi, lorsque vous souhaitez ajouter un fichier à sauvegarder, vous n'avez qu'à modifier le batch "compression.bat" par exemple !

Ensuite, pour exécuter tous les batchs dans un batch plus général, il suffit de faire un appel sous la forme : call monbatch.bat


Compresser les fichiers

Lorsque vous sauvegardez des documents ou des codes sources, une bonne compression peut vous faire gagner beaucoup de place, surtout lorsqu'elle exclut des fichiers inutiles (les .exe, lors de la sauvegarde de code source par exemple). Pour cela, j'utilise 7zip en ligne de commande.  


Le commutateur : -x@exclude_source.txt vous permet de spécifier un fichier (exclude_source.txt) qui contient les fichiers à exclure (ou des ensembles de fichier, *.exe,par exemple).

Envoyer les fichiers sur un FTP

Les hébergeurs Internet vous proposent bien souvent, en plus d'un espace disque déjà pharaonique pour votre site, un espace de sauvegarde (si ce n'est pas le cas, vous pouvez utiliser l'espace disque dédié à votre site). Vous pouvez donc sans problème y stocker des sauvegardes de vos fichiers.

Windows inclut un client FTP en ligne de commande assez efficace pour nos opérations de sauvegarde. Afin de pouvoir l'exécuter en mode batch, nous lui passons un fichier de commandes FTP à exécuter : ftp -s:mescommandes.txt  

Ce fichier contient par exemple :

open monserveurftp.com
utilisateur
motdepasse
prompt binary
cd MonDossierSauvegarde
mput *.7z<br>quit

La commande prompt annonce au FTP qu'il ne doit pas poser de question lors de l'utilisation des fonctions mdelete, mput et mget. La commande binary permet de forcer le transfert des fichiers en mode binaire. Ceci est primordial afin d'éviter que les fichiers compressés ne soient corrompus lors de l'envoi !  

La commande : mput *.7z envoie tous les fichiers du répertoire local dont l'extension est.7z sur le FTP. Vous pouvez naviguer sur le FTP avec la même commande que sous dos (cd).

Pour vider un dossier sur le FTP, vous pouvez utiliser la commande : mdelete *.* après vous être placé dans le répertoire à vider !

Recevoir le résultat de l'exécution par courriel

J'utilise pour cela l'application mailsend.exe en ligne de commande. En une seule commande, vous pouvez ainsi envoyer un courriel contenant le résultat de la sortie des commandes de votre batch. Pour écrire la sortie des commandes de votre batch dans un fichier texte, vous devez faire suivre chaque commande de : >>masortie.txt  

Par exemple :

call monbatch.bat>>masortie.txt
erase Semaine*.*>>masortie.txt

L'utilisation de >> au lieu de > assure que tout est écrit à la suite du même fichier. Vous pouvez ensuite facilement envoyer un courriel avec la commande :
MAILSEND -d mondomaine.com -smtp smtp.monfai.com -t<a
href="mailto:monadresse@masociete.com">monadresse@masociete.com</a>-f <a
href="mailto:monadresse@masociete.com">monadresse@masociete.com</a>-sub
"Rapport de sauvegarde" +bc +cc -a sortie.txt,text/plain,i
 

Pour plus de détails, tous les commutateurs de la commande mailsend.exe sont détaillés sur la page de téléchargement.

Chemins

Attention à utiliser le plus souvent possible des chemins complets(C:MesFichiersmescommandesftp.txt) afin d'éviter de vous perdre dans des chemins relatifs (qui sont donc relatifs à qui exécute le script et aux déplacements dans l'arborescence que vous faites durant l'exécution du script).

Exécution programmée et rotation

Une fois vos batchs écrits (et testés !), vous pouvez planifier leur exécution grâce aux Tâches planifiées de Windows (Accessoires > Outils Systèmes). Vous pouvez configurer un système de rotation avancé en effectuant des suppressions sur le FTP au moment opportun.

Vous avez désormais toutes les clés en main pour créer vos scripts de sauvegarde.  

Ce contenu a été réalisé par le blog accolade.ch (Raphaël Emourgeon) sous licence Creative Commons.