Mon plan de sauvegarde actuel

Aujourd’hui 31 mars c’est le World Backup Day, c’est un bon moment pour parler un peu de mon plan de sauvegarde.

En gros qu’est ce que j’ai à sauvegarder? En local, j’ai ma machine principale, celle qui contient beaucoup de choses, pour ne pas dire tout, en particulier mes photos et mon catalogue Lightroom. Mais j’ai également les données de mon serveur dédié Kimsufi, à savoir les sites web que j’héberge qui ont besoin d’être sauvegardés bien entendu.

Pour commencer par le serveur, il y a plusieurs tâches qui s’occupent des backups, à commencer par une sauvegarde que j’appelle « system » et qui historise (par snapshots) principalement /etc . Ensuite, tous les jours un dump de toutes mes bases de données est fait, à cela s’ajoute un backup des sites web. Le tout est fait en local sur le serveur.

Côté maison, le système (Windows) est sur un petit SSD que je ne sauvegarde pas, les données par contre sont sur une pile RAID 1 de 2 disques de 1To (ce qui ne constitue pas une sauvegarde). Des backups quotidiens sont effectués sur un NAS Qnap (RAID 1).

Pour terminer, un autre cron sur le serveur copie via rsync les sauvegardes des sites web (et du système) sur le NAS tous les jours également.

Le petit point noir de mon plan est que je n’ai pas vraiment de sauvegardes externalisées de mes données, donc en cas de grosse catastrophe à la maison – genre incendie ou me faire tout voler – je peux tout perdre.

Récupération SFTP automatique sous Windows avec WinSCP

Script SFTP automatique d’un serveur GNU/Linux distant sous Windows avec les fonctionnalités de scripting de WinSCP.

Il y a quelque temps maintenant je suis passé à un serveur Kimsufi SSD, ce qui a bien augmenté ses performances  au détriment de la capacité de stockage. Mon plan de sauvegarde (du système et des sites hébergés) a donc été modifié pour garder moins de backups sur le serveur en supprimant les plus anciens. Suite à ce constat, j’ai décidé d’automatiser le téléchargement des backups sur ma machine locale, mais sous Windows on a pas facilement un rsync ou du ssh à porté de main. Après un peu de recherche j’ai découvert que le client FTP/SFTP WinSCP était facilement scriptable, ceci ajouté à une tâche planifiée, j’avais ma solution de download de sauvegardes sous Windows.

Le principe est très simple, nous allons écrire un script WinSCP qui sera appelé par un batch Windows.

Script WinSCP

Voici un exemple de scripting WinSCP, à mettre dans un fichier texte genre backup_ftp.txt  :

open sftp://username:xxxxxxx@monserveur.net/ 
    -hostkey="ssh-rsa 2048 fc:6d:bc:4d:76:9d:08:4e:7e:31:56:45:d9:a4:97:22"
cd /home/username/backups/
option transfer binary
get -neweronly *.tgz c:\Users\win-username\backups\
close
exit

 

Plutôt explicite non? Ligne par ligne :

  1. Ouverture d’une session SFTP sur le serveur distant.
  2. Déplacement dans le répertoire des fichiers à récupèrer.
  3. Quelques options de transfert.
  4. On récupère les nouveaux fichiers uniquement ayant l’extension TGZ avec la commande get
  5. On ferme la connexion.

Pour la partie hostkey de l’ouverture de session, WinSCP permet de facilement la trouver. Pour cela il faut se connecter sur le serveur, puis aller dans Session > Informations sur le serveur/protocole et dans le premier onglet, il suffit de recopier la valeur sous Empreinte digitale du serveur hôte.

Trouver la clé du serveur dans WinSCP
Trouver la clé du serveur dans WinSCP

 

 

 

 

 

 

 

 

 

 

Les scripts WinSCP permettent de faire beaucoup de choses, se référer à la liste des commandes disponibles pour avoir un aperçu exhaustif des possibilités.

Script CMD

Le script Windows va invoquer la commande winscp.exe  avec en option le chemin vers notre fichier de script, je l’ai nommé download_backups.cmd  :

"C:\Program Files (x86)\WinSCP\winscp.com" 
    /script=C:\Users\win-username\bin\backup_ftp.txt

 

C’est tout. Pour l’automatisation, il suffit de créer une tâche planifiée qui exécute notre script download_backups.cmd.

Plus tard nous verrons comment ajouter un log et envoyer le rapport par email en fin de récupération.