@echo off REM Script de sauvegarde du site FTP ainsi que de la base SQL pour ftpperso.free.fr REM Version 1.00e du 12/06/2012 - Version production - DUPRE Jonathan REM Source du script original : http://syskb.com/sauvegarder-son-site-ftp-automatiquement-avec-winscp/ REM Edité avec Notepad++ REM -------------------------------------------------------------------------------- REM Avertissement - N'oubliez pas de personaliser ce script ! REM : Modifiez les lignes 16 à 33 REM -------------------------------------------------------------------------------- REM Variables globales REM ------------------ REM Répertoires REM Répertoire final ou seront stockés les différentes sauvegardes... set backup_base_dir=g:\ REM Autres fichiers de configuration REM Script WinSCP à appeler set winscp_script=e:\scripts\backup_ftp_script.txt REM Executables set wget_exe=c:\linux_tools\wget.exe set winscp_exe=c:\program files\winscp\winscp.com set sevenzip_exe=c:\program files\7-Zip\7z.exe REM Needs MS RKTools ! set tail_exe=c:\program files\Windows Resource Kits\Tools\tail.exe Rem Identifiants set url_backupdb=http://sql.free.fr/backup.php set free_login=[IDENTIFIANT] set free_password=[MOT_DE_PASSE] REM Programme principal REM ------------------- 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" set hoffset=%time:~0,2% if "%time:~0,1%"==" " set hoffset=0%time:~1,1% set ddmmaa_hhmmss=%date:~6,4%-%date:~3,2%-%date:~0,2%_%hoffset%h%time:~3,2%m%time:~6,2%s REM On conserve en variable l'heure de lancement du job. set start_datetime=%date:~0,2%/%date:~3,2%/%date:~6,4% @ %hoffset%h%time:~3,2%m%time:~6,2%s REM On défini le nom du fichier journal du job en mémoire en variable. set log_file=%backup_base_dir%\%ddmmaa_hhmmss%_log.txt REM Starting tail of logfile start cmd /c "%tail_exe%" -f %log_file% REM DEBUG echo -------------------------------------------------------------- >> %log_file% echo Starting new backup job on %start_datetime% >> %log_file% echo -------------------------------------------------------------- >> %log_file% REM On met en forme le futur nom de répertoire de sauvegarde courant (en cours...) REM 'work' = 'working' = travail en cours... set working_dir=%backup_base_dir%\work\ REM Définition des nom de fichier finaux pour les données récupérées... set final_dir=%backup_base_dir%\%ddmmaa_hhmmss%_files set gz_sql_file=%backup_base_dir%\%ddmmaa_hhmmss%_sql.gz REM Création du répertoire de travail... md %working_dir% REM Et on rentre dedans afin qu'il soit répertoire actif cd %working_dir% REM DEBUG - Renseignement du fichier log. echo Working directory is %working_dir% >> %log_file% echo Final backup directory is %final_dir% >> %log_file% echo PHASE 1/3 : Calling WGet4Win32 for backuping database... >> %log_file% echo Invoking wget... >> %log_file% REM On lance wget pour récupérer sa bdd sur le serveur mysql de free "%wget_exe%" %url_backupdb% -v --post-data="login=%free_login%&password=%free_password%&check=1&all=1" -O %gz_sql_file% -a %log_file% echo WGet4Win32 backuping step is finished ! >> %log_file% echo PHASE 2/3 : Calling WinSCP for backuping files... >> %log_file% REM On appelle notre script WINSCP "%winscp_exe%" /script:"%winscp_script%" >> %log_file% REM La copie du site est terminée, on peut sortir du répertoire en cours cd.. REM DEBUG - Renseignement du fichier log. echo WinSCP backuping step is finished ! >> %log_file% echo PHASE 3/3 : Starting 7zip for compressing...... >> %log_file% REM Appelons 7-ZIP pour compresser tout cela... "%sevenzip_exe%" a %final_dir%.zip %working_dir%\* >> %log_file% echo 7z compressing step is finished ! >> %log_file% echo Removing the directory : %working_dir% >> %log_file% REM On peut maintenant supprimer le répertoire de travail que l'on a zippé, REM Nous souhaitons uniquement conserver l'archive, et cela peut gêner la prochaine sauvegarde. rmdir /S /Q %working_dir% REM DEBUG - Renseignement final du fichier log. echo -------------------------------------------------------------- >> %log_file% echo Job done ! Summary : >> %log_file% echo Started at : %start_datetime% >> %log_file% set hoffset=%time:~0,2% if "%time:~0,1%"==" " set hoffset=0%time:~1,1% set end_datetime=%date:~0,2%/%date:~3,2%/%date:~6,4% @ %hoffset%h%time:~3,2%m%time:~6,2%s echo Finished at : %end_datetime% >> %log_file% echo -------------------------------------------------------------- >> %log_file% REM Fichier BAT terminé.