Sauvegarde par batch sous Windows, conseils et outils indispensables !

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 comme on le souhaite.

Dans certains cas je privilégie donc l’utilisation de scripts “batch” qui m’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 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 :

&gt;&gt;masortie.txt

Par exemple :

call monbatch.bat&gt;&gt;masortie.txt
erase Semaine\*.*&gt;&gt;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:\MesFichiers\mescommandesftp.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. Désormais, à vous de jouer !

Articles relatifs



6 commentaires

  1. Voila : J’ai un contrôleur de domaine NT4, et pas de “tâches planifiées” sur cette plate forme.
    Ma seule alternative pour faire des sauvegardes programmées est Cobian backup, mais il arrive souvent que l’appli se ferme. Existe-t-il un prog gratuit qui tourne sous NT4 ? Et si oui, lequel ?
    Merci pour cette documentation.

  2. J’essayerai éventuellement ultrabackup (http://astase.com/produits/ultrabackup), c’est un produit gratuit mais plus évolué que cobian backup.

    Sinon, pourquoi n’utilises tu pas un freeware (ou la commande AT) pour effecuter une tâche cron sous NT4 et utiliser les conseils ci-dessus ?

  3. Bonjour,

    J’ai fait un batch pour une sauvegarde incrémentielle de dossiers avec “xcopy Source Destination /E /H /R /Y /I /D “.
    Ca marche très bien, maintenant je souhaiterais envoyer tout ce qui défile à l’écran lors de la copie dans un fichier texte, pour faire comme un log…

    J’ai essayé avec “>” et même “>>” (pour concaténer sans effacer), mais je n’obtiens dans le fichier texte que le résumé, du genre “5 fichier(s) copi‚(s)” .
    Moi j’aimerais bien voir la liste de ce qu’il copie…
    Est-ce possible, toujours en batch, et si oui comment ???

    Merci beaucoup d’avance.
    -Brice-

  4. Essaye peut être de mettre tes commandes dans un bat séparées puis de faire comme moi, call monbatsepare.bat >> monfichier.txt

    Si ça ne marche pas, c’est peut être lié à la commande xcopy qui n’a pas une sortie standard ?

  5. Hello,
    En fait ça marchait bien, c’est juste que dans mon exemple il n’y avait plus de fichier à copier… :-$
    Dès lors qu’il y en a, la sortie (dans un txt ou pas) le note bien, avec le chemin en plus.
    ==> Ca c’est chouette.
    ==> merci donc, ça rend bien ce que je voulais, à savoir le détail de ce qui se copie dans le fichier txt.
    En revanche, (call mode-tatillon.bat) y’a-t-il un moyen pour combiner les 2, à savoir l’affichage à l’écran ET l’inscription dans un txt ??…

    Ca consisterait à “dédoubler la sortie” en quelque sorte, d’où mon a priori très pessimiste…

    Merci à bientôt !
    —Brice—

  6. Effectivement, balancer la sortie sur l’écran et dans le fichier, ça va être dur dur :-)

Ajouter un commentaire

Attention : les commentaires sont modérés, ils n'apparaissent donc pas tout de suite.


Creative Commons License