Blog de Philip Doxakis    LinkedIn    GitHub    RSS

Comment faire un backup automatisé? (PARTIE 2)

Dossier personnel / MySQL / MS SQL

Script de backup

Cet article a pour but de présenter la manière que vous pourriez envisager de faire vos backups à l’aide de script. Je vais présenter divers exemples de scénarios. Sur Windows, vous aurez besoin du gestionnaire de tâches sur Windows (Task Scheduler). Il suffit de créer une nouvelle tâche et d’indiquer l’application à démarrer. Dans le présent article, je vais vous présenter quelques scripts dos.

Rotation des backups

Pour mes besoins, je n’ai pas besoin de conserver un grand nombre de backups. Dans le pire des cas, je souhaite être en mesure de revenir à une semaine en arrière.

Pour ce faire, j’utilise le jour de la semaine dans le nom des fichiers de backup afin d’écraser l’ancien backup.

Dans le script dos suivant, la variable %dow% pourrait être égale à friday.

for /f %%i in ('powershell ^(get-date^).DayOfWeek') do set dow=%%i
echo %dow%

Dossiers personnels

Voici un petit script assez simple qui permet de copier/coller tous vos fichiers personnels sur un disque réseau.

Notes:

  • L’emplacement du backup est : Z:\AllFiles\ (je suppose que le disque Z:\ existe et que le dossier AllFiles est déjà créé.)
  • Changez servername.domain par le nom d’une machine se trouvant dans le réseau. Cela peut être utile afin de valider que vous vous trouvez dans le réseau de la compagnie si vous travaillez à l’extérieur.
  • Si vous automatisez ce script, enlevez les commandes “pause”.
@ECHO OFF
REM Determine if we are on the company network.
TITLE BACKUP ALL FILES
ECHO VERIFICATION 1 / 1
PING servername.domain >nul
IF ERRORLEVEL 0 GOTO GOOD
GOTO BAD

:GOOD
CLS
ECHO It may take some time. (Not recommended over VPN)
ECHO It will backup : C:\Users\%username%
PAUSE

ECHO Starting...
XCOPY "C:\Users\%username%" "Z:\AllFiles\" /Y /S
ECHO Backup done.
PAUSE
GOTO END

:BAD
CLS
ECHO BACKUP FAILED.
ECHO The script has determined that you are not on the company network.
PAUSE
GOTO END

:END

Microsoft SQL Server

Il est possible d’exécuter des commandes SQL avec la ligne de commande DOS en utilisant la commande SqlCmd.

Voici un script permettant de produire un backup à un certain répertoire. (Assurez-vous d’utiliser un compte qui a les accès nécessaires pour se connecter à SQL Server.)

  • Créez un fichier BackupSQL.cmd avec le script dos plus bas.
  • Exécuter BackupSQL.cmd avec en paramètre le nom de la base de données à prendre en backup. (Ex: BackupSQL.cmd NomDeLaBaseDeDonnees)

Notes:

  • Changez instanceName pour le nom de l’instance où ce situe votre base de données.
  • serveurSql.domain est le nom de la machine où SQL Server est installé.
  • serverBackup.domain est le nom de la machine conservant les backups.
  • L’emplacement du backup: D:\BackupDatabases
@ECHO OFF
for /f %%i in ('powershell ^(get-date^).DayOfWeek') do set dow=%%i
echo %dow%

SET MyDB=%1
SET BackupFolder=\\serverBackup.domain\d$\BackupDatabases\

DEL /F /Q %BackupFolder%BACKUP-%dow%-%MyDB%.bak
SqlCmd -E -S serveurSql.domain\instanceName -Q "Backup Database %MyDB% To Disk='%BackupFolder%BACKUP-%dow%-%MyDB%.bak'"

MySQL avec WAMP

Vous avez installé un environnement WAMP ? (Windows-apache-mysql-php)

Voici un script permettant de produire un fichier de backup de toutes les bases de données de MySQL.

Notes:

  • Je suppose que l’installation de WAMP est à la racine du disque D:\
  • Je suppose que la version de MySQL est 5.7.9 (adaptez au besoin)
  • Je suppose que le mot de passe de l’utilisateur root est MonSuperMotDePasse (changez-le)
  • L’emplacement du backup est: D:\backup\all-database.sql
@ECHO OFF
D:
cd D:\wamp\bin\mysql\mysql5.7.9\bin
DEL /F /Q D:\backup\all-database.sql
mysqldump -uroot -pMonSuperMotDePasse --all-databases > D:\backup\all-database.sql

Je vous recommande de copier/coller le fichier de backup sur une autre machine par la suite en utilisant la commande “copy”.

Notes:

  • serveurMysql.domain est le nom de la machine avec MySQL.
  • serverBackup.domain est le nom de la machine conservant les backups.
  • L’emplacement du backup: D:\BackupDatabases
  • La variable %dow% est le jour de la semaine.
DEL /F /Q \\serverBackup.domain\d$\BackupDatabases\BACKUP-%dow%-all-mysql.sql
COPY \\serveurMysql.domain\d$\backup\all-database.sql \\serverBackup.domain\d$\BackupDatabases\BACKUP-%dow%-all-mysql.sql /Y /z

Conclusion

Pour conclure, assurez-vous de bien tester vos backups. Vérifier de temps en temps ou à intervalle régulier que vos scripts de backup sont bien fonctionnels. Assurez-vous d’exécuter vos scripts durant la période où il y a le moins d’utilisateurs idéalement. Les tâches planifiées devraient être exécutées par l’utilisateur SYSTEM.