Powershell : faire un backup de fichiers et de mysql sur amazon s3
Je cherchais à faire un script similaire de sauvegarde pour la suite de charmants, celui que nous utilisons depuis un peu plus d’un an nous donne satisfaction mais il faut l’adapter à la nouvelle plateforme. J’ai commencé à manipuler PowerShell pour la compilation du site avec PSake donc je voulais réutiliser le peu de connaissances acquises.
Les objectifs : sauvegarder les fichiers et la base de données MySql et compresser le tout avant de l’uploader vers Amazon S3.
Voici le script Powershell :
& mysqlcheck -c -a –auto-repair -o -e -A -v -u root -password -W & mysqldump -u root -ppassword -W –all-databases > C:\site\mysql_backup.sql $date = (get-date).ToString(‘dd_MM_yyyy_HHMMss’) & ./Build/tools/7za.exe a -ssw C:\Backup$date.7z C:\site\ Add-PSSnapin CloudBerryLab.Explorer.PSSnapIn $s3 = Get-CloudS3Connection -Key YourKey-Secret YourSecret $destination = $s3 | Select-CloudFolder -path “DossierS3” $src = Get-CloudFilesystemConnection | Select-CloudFolder “C:\” $src | Copy-CloudItem $destination –filter “Backup$date.7z” $report = Get-Content c:\backuplog.txt $smtp = new-object System.Net.Mail.SmtpClient $smtp.Host = ‘smtp.gmail.com’ $smtp.Port = 587 $smtp.EnableSsl = $true $smtp.Credentials = new-object System.Net.NetworkCredential(’email’, ‘password’) $smtp.Send(‘gmail’,’email’,‘backup’$date, $report)
Quelques remarques :
-
le script de sauvegarde de MySql est la solution basique, le moteur InnoDb ne garantit pas que toutes les données soient écrites sur disque. Il existe des solutions payantes pour faire des backups à chaud et d’autres gratuites pour des systèmes Unix.
-
J‘utilise 7zip en version ligne de commande pour compresser le répertoire où se trouve le site, les autres programmes, les fichiers de configuration etc.
-
Les commandes PowerShell d’accès à S3 sont disponibles en installant Cloud Berry Explorer pour Amazon S3. Attention toutefois l’enregistrant décrit dans la documentation ne marche pas pour la version 64 bit de PowerShell il faut donc lancer le script via la version qui se trouve dans syswow64
-
Ce script est lancé via un fichier DOS avec une redirection vers un fichier de log depuis le Task Scheduler de Windows 2008 R2
copy /y nul C:\backuplog.txt cd C:\site\Scripts %SystemRoot%\syswow64\WindowsPowerShell\v1.0\powershell.exe C:\site\Scripts\Maintenance.ps1
- Ce dernier est envoyé par email avec un compte gmail après le transfert vers S3
Billet publié dans les rubriques Programmation le