Sauvegarder son site FTP automatiquement avec WinSCP


Afin de palier à l’utilisation d’un programme clé en main, qui consomme de la mémoire et qui ne garantie pas toujours un résultat optimal, je vous propose ici de mettre en place une solution de sauvegarde gratuite, simple et efficace de votre site FTP (Avis aux utilisateurs de WordPress, Joomla, Dotclear et autres plateformes de publications) sur une station de travail Windows. Il sera possible alors de planifier l’exécution de la sauvegarde via une tâche planifiée ou de la lancer manuellement en double-cliquant sur un raccourci.

Mise en place

Tout d’abord il est nécessaire d’installer ces 2 freewares : WinSCP pour transférer le contenu de votre choix de votre serveur FTP vers votre station et 7-Zip pour compresser et archiver votre contenu afin de le conserver précieusement par la suite (versionning)

Une fois l’installation terminée vous allez créer avec votre éditeur de texte 2 fichiers que vous allez nommer respectivement LaunchBackup.bat et backupscript.txt et que vous allez sauvegarder dans un répertoire nommé C:\MesSauvegardes

Sauvegarder son site FTP automatiquement avec WinSCP kb  Wordpress WinSCP Scripting ftp Blogging

Le fichier LaunchBackup.bat est le fichier batch principal qui contient le code suivant:

REM Mise en forme de la date et de l'heure afin de créer un TIMESTAMP
REM Le TIMESTAMP est une sorte d'étiquette que l'on ajoutera au nom
REM du répertoire de sauvegarde afin de le rendre "unique"
REM Une petite bidouille est nécessaire pour les heures inférieures à 10
REM Car elles ne contiennent qu'un seul chiffre

set hoffset=%time:~0,2%
if "%time:~0,1%"==" " set hoffset=0%time:~1,1%
set ddmmaa_hhmmss=%date:~0,2%%date:~3,2%%date:~6,4%_%hoffset%%time:~3,2%%time:~6,2%

REM On met en forme le futur nom de répertoire de sauvegarde
set backupdirectory=bck_%ddmmaa_hhmmss%

REM Maintenant on le créé
md %backupdirectory%

REM Et on rentre dedans afin qu'il soit répertoire actif
cd %backupdirectory%

REM On appelle notre scrip WINSCP nommé backupscript.txt
"c:\program files\winscp\winscp.com" /script:"c:\MesSauvegardes\backupscript.txt"

REM La copie est terminée, on peut sortir du répertoire en cours
cd..

REM Afin de le sauvegarder avec notre archiveur 7-ZIP
"c:\program files\7-Zip\7z.exe" a %backupdirectory%.zip %backupdirectory%

REM On peut maintenant supprimer le répertoire que l'on a copié
REM Car nous souhaitons uniquement conserver l'archive
rd /S /Q %backupdirectory%

Le fichier backupscript.txt est le fichier de script WinSCP qui sera appelé par LaunchBackup.bat afin de réaliser la connexion et le transfert du contenu désiré vers votre station de travail Windows. Il contient le code suivant:

# Début du script WinSCP
# Réponse automatique pendant l’exécution du script
# On sort en cas d’erreur
option batch on
option confirm off

# On se connecte à notre serveur FTP
# open login:password@nomduserveur.com
open ftplogin:motdepassesecret@adressedevotreftp

# On active le mode de transfert binaire
option transfer binary

# On télécharge l’arborescence de notre choix
# Qui sera stockée dans le répertoire actif définit dans le fichier BATCH
# Ici je télécharge le répertoire /site/images de mon serveur
get /site/images

# On se déconnecte
close

# Et on sort de WinSCP pour retourner dans le batch principal
exit

Démonstration du script

Nous pouvons donc passer à l’exécution du script LaunchBackup.bat afin de tester le fonctionnement.

Vous pouvez ajouter l’instruction pause à la fin de LaunchBackup.bat afin de diagnostiquer une éventuelle erreur … les fautes de frappes sont monnaie courante en scripting …

Sauvegarder son site FTP automatiquement avec WinSCP kb  Wordpress WinSCP Scripting ftp Blogging

Tout semble bien se dérouler, si vous regarder dans C:\MesSauvegardes, les fichiers sont en cours de récupération dans un répertoire nommée bck_09042008_110657. Un TIMESTAMP a en effet été ajouté au nom du répertoire (09 Avril 2008 à 11h06m57s) afin d’identifier clairement la sauvegarde mais surtout de pouvoir conserver une multitude de versions de son site FTP.

Sauvegarder son site FTP automatiquement avec WinSCP kb  Wordpress WinSCP Scripting ftp Blogging

Une fois la rapatriement des fichiers effectuer, le script passe à la dernière étape qui consiste à archiver le répertoire avec 7-Zip puis supprimer l’original. Comme vous pouvez le constater il ne nous reste plus que l’archive.

Sauvegarder son site FTP automatiquement avec WinSCP kb  Wordpress WinSCP Scripting ftp Blogging

Vous pouvez maintenant créer un raccourci du fichier LaunchBackup.bat sur votre bureau ou votre barre de lancement rapide afin de lancer dès que vous le souhaitez votre sauvegarde.

De la même manière vous pouvez planifier une tâche Windows afin d’automatiser la sauvegarde de votre site FTP.

A vous de jouer !

Partagez cet article avec vos amis

Vous avez aimé cet article ? N'hésitez pas à le partager avec vos amis en cliquant sur les boutons ci-dessous :

  • Sauvegarder son site FTP automatiquement avec WinSCP kb  Wordpress WinSCP Scripting ftp Blogging
  • Sauvegarder son site FTP automatiquement avec WinSCP kb  Wordpress WinSCP Scripting ftp Blogging
  • Sauvegarder son site FTP automatiquement avec WinSCP kb  Wordpress WinSCP Scripting ftp Blogging
  • Sauvegarder son site FTP automatiquement avec WinSCP kb  Wordpress WinSCP Scripting ftp Blogging
  • Sauvegarder son site FTP automatiquement avec WinSCP kb  Wordpress WinSCP Scripting ftp Blogging
  • Sauvegarder son site FTP automatiquement avec WinSCP kb  Wordpress WinSCP Scripting ftp Blogging
  • Sauvegarder son site FTP automatiquement avec WinSCP kb  Wordpress WinSCP Scripting ftp Blogging
  • Sauvegarder son site FTP automatiquement avec WinSCP kb  Wordpress WinSCP Scripting ftp Blogging
  • Sauvegarder son site FTP automatiquement avec WinSCP kb  Wordpress WinSCP Scripting ftp Blogging
  • Sauvegarder son site FTP automatiquement avec WinSCP kb  Wordpress WinSCP Scripting ftp Blogging
  • Sauvegarder son site FTP automatiquement avec WinSCP kb  Wordpress WinSCP Scripting ftp Blogging
  • Sauvegarder son site FTP automatiquement avec WinSCP kb  Wordpress WinSCP Scripting ftp Blogging

  • Pingback: Sauvegarder un site FTP avec Cobian Backup

  • Yoyo

    Bonjour,
    A mon avis, il est préférable d’utiliser des tâches Cron pour générer vos fichiers de backup (fichiers et base de données). Ce sera automatisé et fiable. Ensuite, vous pouvez récupérer ces fichiers manuellement ou les copier sur un autre serveur ou en local avec un autre script.
    http://webmastips.com/fr/sauvegarde-de-site-web
    Tous les hébergeurs mettent à disposition les script Cron, en ligne de commande ou via CPanel par exemple !
    Cordialement,

  • http://6www.net Thomas Doki-Thonon

    Très bon tuto. Merci.
    Par contre au milieu du transfert j’ai :

    “Délai dépassé lors de l’attente de l’exécution de la commande par la console externe.
    Pas de session.”

    Et le transfert s’arrete.
    Le zip se fait bien derrière mais je n’ai pas tous les fichiers.

    Faut-il se mettre en passif ou quelque chose du genre ?
    Merci

  • http://jonathan.dupre.free.fr jonathan

    Merci pour tes scripts.

    J’ai procédé à quelques améliorations, plus d’infos sur mon site perso :
    http://jonathan.dupre.free.fr/articles/articles.php?cat=12&id=32

  • http://www.aixim.com Cédric

    Bonjour,
    Merci pour ce script très instructif (j’essaye de comprendre l’utilisation des .bat), Maintenant si je veux faire l’inverse envoyé des données de mon PC vers le serveur ftp comment dois je faire? Et quel serait les inconvénients en comparaison de COBIAN (vitesse, sécurité, fiabilité)? Merci de votre réponse.

  • http://sloyvy.com/twitter Patrice

    même problème que pierre.
    Pour le résoudre, dans mon cas, il ne faut pas indiquer /site/images
    mais plutôt le chemin complet sur la machin : /home/monsite/www/image par exemple.
    (j’y connais nada)

    J’aimerais zipper le répertoire avant de le recevoir (j’ai plus d’un Go de données avec de petits fichiers)
    Je vais chercher… mais si quelqu’un passe par là, merci :)

  • Pierre

    Bonjour,

    Je n’arrive hélas pas à le faire fonctionner, il semble bien paramétré, le répertoire de sauvegarde se créé puis l’invite de commande se ferme toute seule sans qu’un seul fichier ai été transféré, est-ce que vous auriez une idée ?

  • guillaume_reynaud

    Bonjour,

    Je test de script et essaie de l'améliorer mais est-il possible d'avoir le défilement des fichiers sauvegardés à l'écran et un fichier log qui sotche tous ce qui a été copiés.

    Car lorsque j'utilise la commande >>test.log je n'ais plus l'affichage à l'ecran du déroulement de la sauvegarde.

    Merci pour votre aide.

  • Pingback: Liste des clients SSH pour Windows

  • Ed

    GG !!!

    Vraiment super ce script !

    Une question pour que ce soit parfait : est il possible de faire une analyse différencielle, pour ne backuper que les fichiers qui ont changés ?
    Ca serait parfait :)

    Ed

  • User1

    Utilisez le fabuleux logiciel Cobian Backup qui fait tout ça à la perfection.
    http://www.01net.com/telecharger/windows/Utilit

    (manuelle ou automatiquement) des fichiers et des dossiers de votre choix. Le répertoire de sauvegarde peut se situer en local (même PC) ou sur le réseau (autre PC). Vous pouvez programmer des sauvegardes automatiques afin qu'elles s'effectuent à des intervalles de temps réguliers. L'application peut également utiliser pkzip en tant que programme externe pour compresser vos données. Elle s'installe dans la barre des tâches à côté de l'heure, afin d'être toujours à portée de clic, et enregistre toutes les opérations exécutées dans un fichier texte.

    • http://syskb.com hatmos

      Cobian Backup est effectivement un très bon outil, je l'utilise également pour sauvegarder mes documents sur ma freebox.

      Le but du script de ce tuto est de proposer une alternative “robuste” à l'utilisation d'une application plus exotique. Utiliser Cobian Backup pour réaliser des transferts de données automatisés en entreprise … c'est plutôt moyen et je tiens à préciser que Cobian backup 9 n'est plus en Open Source.

      C'est d'ailleurs l'inconvénient de ce type d'applications … c'est open source , open source , open source … et d'un coup ca devient PAYANT, on a rien vu venir … et on ne sait plus comment s'en passer ;-) et en entreprise réinventer la poudre ça coûte du temps et de l'argent.

  • Riviere Yannick

    Bonjour,

    Je teste votre script avec intêret mais je me retrouve face à un code d'erreur 2. Je tente en fait de sauvegarder le répertoire distant d'un serveur. l'ouverture de session est correcte, mais le script ne trouve pas mon dossier. Que puis-je faire selon vous?

    “code demandé 11″

    Merci

    • Riviere Yannick

      Je viens de trouver ma propre réponse. ” get /data/* “

      Mais une autre question me vient! Je souhaite pour minimiser le trafic réseau que cette sauvegarde soit incrémentielle. Quelles modifications apporter? Un /D suffit ?

      • http://syskb.com hatmos

        WinSCP permet de faire des transfert incrémental en comparant la source et la cible. Je pense par exemple à la commande keepuptodate. Par contre une fois les données compressées il n'y aura plus moyen de comparer.

        Une solution pourrait être de conserver un répertoire local toujours “up to date” par rapport au répertoire remote et de l'archiver / zipper de temps en temps. Concrètement le script lors de son exécution mettrait à jour un répertoire X qui ne change jamais de nom et à fin de la mise à jour ce répertoire est archivé mais pas supprimé.

        • Laurent

          Salut
          Merci pour ce tuto et heureusement que certains apportent des point de détails important pour le faire fonctionner !!!
          J'aimerai moi aussi réaliser des sauvegardes incrémentales.
          Comment réaliser cette opération ?

  • nico

    bonjour,
    tout d'abord merci pour ce script, je l'ai mit en place pour mes sitres et cela fonctionne mais j'ai quand même un petit problème.
    Après plusieurs tests, il y a quelques fichiers qui ne sont pas copiés, d'ailleurs pendant l'execution du programme, la dernière colonne est des fois à 0%, je me doute que le transfert n'a pas été effectué mais pourquoi ?
    J'ai mit un timout à 3000 ? Est ce à voir ?
    Merci par avance.

  • http://syskb.com admin

    @Franck

    Bonjour, peux tu être plus explicite dans ta remarque ? De qui et de quoi parles tu ? Je suis l’auteur de l’article mais je n’arrive pas à comprendre ou tu vois : “regardez tout à l’air de fonctionner”

  • franck

    franchement il as l’air bien sympa ce petit script !!

    par contre l’auteur aurais pu expliqué un peu mieux parce qu’arrivé à l’étape de lancé la sauvegarde il nous sort “regardez tout à l’air de fonctionner” t’es gentil toi mais ta fais comment pour qu’il te sorte ça en ligne de commande ?

    enfin bref on va se débrouillé c’est quand même deja un bon debut!

  • Anonymous

    Dans backupscript.txt à la place de “get /site/images” j’ai mis “/*.*”

    Il faut mettre “get /site/images/*”

  • jude

    Bonjour,

    j’ai mis en place le script, mais j’ai une petite question :

    Dans backupscript.txt à la place de “get /site/images” j’ai mis “/*.*” pour esperer copier tous les fichiers, dossiers et sous dossiers, cependant je ne copie pas tout ainsi. Auriez vous une idée? Merci d’avance

  • http://www.epicemed.org Charlie

    Merci beaucoup pour le script de backup.
    Cela va me permettre une plus grande fiabilité des ateliers.
    un détail : préciser le type de ftp suivant les contraintes de l’hébergeur.
    exemple : open ftp://ftplogin:motdepassesecret@adressedevotreftp
    ou sftp://ftplogin:motdepassesecret@adressedevotreftp
    merci

    • DaD

      Merci pour la precision, ça m'a bien aidé