Synology : sauvegarder mon site web distant (Free) automatiquement

Introduction :

Mise en place d'une sauvegarde automatique de mon site Web Free
- Sauvegarde du contenu FTP (en mode synchronisation)
- Sauvegarde de la base de données (fichier sql compressé et archivé par date)

Les scripts s'appuient sur l'idée originale de Jean-Michel :
Le blog de Jean Michel
Vous trouverez sur son blog des informations qui vous permettrons de modifier le script fourni sur cette page afin de réaliser une sauvegarde à l'identique pour un site qui ne serait pas hébergé par Free.

Prérequis :

- savoir utiliser VI
- le module IPKG doit être installé
- le module Telnet ou SSH doit être activé sur le Syno

Installation du module LFTP :

Afin de synchroniser mon contenu Web je peux utiliser le commande "wget" pour récupérer  l'entier du site distant. Toutefois, cette commande va imposer un temps de copie extrèmement long. Afin d'accélérer le traitement, je vais utiliser un outils qui permet d'effectuer une synchronisation (comparaison source - destination) et qui ne copiera que les modifications ou ajouts.
L'outils en question est LFTP.

Ouvrir une session Telnet sur Syno.
Se positionner sur : /volume1/@tmp
cd /volume1/@tmp
Télécharger le module LFTP pour votre Syno dans le répertoire @tmp (Cf sources IPKG : http://ipkg.nslu2-linux.org/feeds/optware/)
Pour le DS 207+ =  lftp_3.7.0-1_arm.ipk

wget http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/lftp_3.7.0-1_arm.ipk

ipkg install lftp_3.7.0-1_arm.ipk

LFTP s'installe mais le programme déclare qu'il a besoin de plusieurs dépendances pour pouvoir fonctionner. Notez les dépendances demandées par le programmes et renouveller cette opération d'installation pour chacunes d'entre elles.

Une fois les dépendances installées, LFTP est fonctionnel.


Script de sauvegarde du contenu FTP :


lftp ftp://identifiant_du_site:mot_de_passe@ftpperso.free.fr -e "mirror -e / /volume1/sauvegarde/sauvegarde-free ; quit"



Script de sauvegarde pour ma base sql :

 # dump de la base sql free
 login=mon_login
 motDePasse=mon_mot_de_passe
 wget http://sql.free.fr/backup.php --post-data="login=$login&password=$motDePasse&check=1&all=1" -O /volume1/sauvegarde/basesql/mabase.sql.gz


Script final amélioré :
## Variables
# Variable representant le jour de la sauvegarde
 JOUR=`date +%Y-%m-%d`
 # Variable comportant le chemin du fichier journal
 LOG=/volume2/miroir/scripts/log
# Variables pour connexion Free
 login=mon_login
 motDePasse=mon_mot_de_passe

## Début du script
echo "---------------------------------------------------------------" >> $LOG/journal.log
echo "---------------------------------------------------------------" >> $LOG/journal.log
 echo "Nom de la sauvegarde:"        FTP FREE >> $LOG/journal.log
 # On ecrit l heure de debut dans le journal
 echo "Heure de demarrage du transfert:" >> $LOG/journal.log
 date >> $LOG/journal.log
lftp ftp://identifiant_du_site:mot_de_passe@ftpperso.free.fr -e "mirror -e / /volume1/sauvegarde/sauvegarde-free ; quit"
 # On ecrit l'heure de fin dans le journal
 echo "Heure de fin du transfert:" >> $LOG/journal.log
 date >> $LOG/journal.log
echo "---------------------------------------------------------------" >> $LOG/journal.log

if [ -d "/volume1/sauvegarde/basesql//$JOUR" ]
 then
   echo "Le repertoire /volume1/sauvegarde/basesql//${JOUR} existe deja !";
 else
   mkdir /volume1/sauvegarde/basesql//$JOUR;
 fi
  touch $LOG/journal.log
 echo "Nom de la sauvegarde:"        DUMP SQL FREE >> $LOG/journal.log
 # On ecrit l heure de debut dans le journal
 echo "Heure de demarrage du transfert:" >> $LOG/journal.log
 date >> $LOG/journal.log
 # dump de la base sql free
 wget http://sql.free.fr/backup.php --post-data="login=$login&password=$motDePasse&check=1&all=1" -O /volume1/sauvegarde/basesql//$JOUR/mabase.sql.gz
 # On ecrit l'heure de fin dans le journal
 echo "Heure de fin du transfert:" >> $LOG/journal.log
 date >> $LOG/journal.log
 echo "---------------------------------------------------------------" >> $LOG/journal.log
 echo "000000000000000000000000000000000000000000000000000000000000000" >> $LOG/journal.log
 echo "---------------------------------------------------------------" >> $LOG/journal.log


Comme vous l'avez compris, le répertoire FTP est synchronisé, la base sql est copiée chaque jour dans un dossier portant comme nom la date du jour.


Mise en place d'une planification dans la crontab:

vi /etc/crontab
 
#minute    hour    mday    month    wday    who    command
 
0    1    *    *    *    root    sh /volume2/miroir/scripts/backup-free.sh




Pour toutes questions concernent ce srcipt, vous pouvez m'envoyer un email