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.

Utiliser rTorrent

Utilisation de rTorrent pour télécharger et partager vos fichiers

rTorrent est un client bittorrent non graphique que j’utilise depuis plusieurs années pour sa simplicité, sa faible empreinte niveau ressources et ses possibilités de configuration poussées. Au début il peut dérouter, mais après un temps d’adaptation, on découvre toute sa souplesse et sa puissance. Il suffit simplement d’un accès SSH pour pouvoir gérer ses téléchargements depuis n’importe où, très utile. Une particularité très intéressante de rTorrent est qu’il scrute le contenu d’un répertoire donné qui recevra les fichiers .torrent, ainsi dès qu’un nouveau torrent est ajouté dans celui-ci, le téléchargement débute automatiquement.

Continuer la lecture de « Utiliser rTorrent »

script : vérifier que rTorrent est lancé

Bash check_rtorrent.sh

Pour la gestion de mes torrents, j’utilise rTorrent, j’ai eu l’occasion d’en parler dans ce billet et celui-ci. Il s’agit d’un daemon très stable, mais pour des raisons X ou Y (genre redémarrage de la machine), j’oublie de le lancer. Pour palier à cela, j’ai écrit ce petit script qui vérifie que le programme est bien démarré, sinon il va tenter de le faire. Si tel est le cas, un email est envoyé pour signaler que rTorrent a été redémarré. Le tout est loggé.

# Fichier de log
LOGPATH="/home/fabien/bin/log/check_rtorrent.log"
# Email
EMAIL="fabien@feub.net"
SUBJECT="[check] rTorrent"
# Si pas de fichier de log, on le crée
if [ ! -f $LOGPATH ]
then
touch $LOGPATH
fi
echo -n $(date) " : Vérification que rTorrent est lancé..." >> $LOGPATH
if /sbin/pidof rtorrent
then
echo "en fonctionnement : OK" >> $LOGPATH
else
echo -n "non démarré..." >> $LOGPATH
echo -n "démarrage..." >> $LOGPATH
/home/fabien/bin/btlaunch.sh
echo "en fonctionnement : OK" >> $LOGPATH
mail -s "$SUBJECT" "$EMAIL" < $LOGPATH
fi

Télécharger check_rtorrent.sh

Pour automatiser cela, je l'ajoute dans mon crontab pour qu'il vérifie toutes les 5 minutes :

$ crontab -e
*/5 * * * * /home/fabien/bin/check_rtorrent.sh