Sauvegarde automatique de son site Internet

Date: 11/06/2010 | Catégories: Blog,Open-source,Systeme | Tags: ,,,

A moins d'être très joueur (ou fou), la sauvegarde de son site Internet doit être pensée et mise en œuvre dès le début d'un projet. Voici une solution basée sur une solution libre (lftp) qui sera très facile de caser dans une crontab pour automatiser cette tache ingrate.

L'architecture est la suivante:

Il faut disposer:

  • d'un serveur Web avec un accès FTP (ce qui est le plus standard chez les hébergeurs)
  • d'un PC de backup connecté en permanence à Internet (histoire d'automatiser le backup)

Préparation du PC de backup

Pas grand chose à installer mis à part l'indispensable client FTP lftp qui va nous permettre de faire un backup incrémental (seul les nouveaux fichiers seront téléchargés).

Exemple d'installation de lftp sous Ubuntu (à adapter à votre OS...):

[shell]sudo aptitude install lftp[/shell]

On créé ensuite un répertoire dans lequel le site Web/blo  sera sauvegardé.

[shell]mkdir ~/backup[/shell]

Configuration de la sauvegarde

On édite le fichier ~/monsite.lftp avec les informations suivantes (à adapter à vos besoins):

[shell]

set ftp:list-options -a
set cmd:fail-exit true
set ftp:ssl-allow false
set ftp:passive-mode on
set net:timeout 10
set net:max-retries 2
set net:reconnect-interval-base 5
set net:reconnect-interval-multiplier 1

open -p 21 login:password@monsite.com
lcd ~/backup
mirror -e -x dossier-a-exclure/

quit

[/shell]

On teste la sauvegarde:

[shell]

lftp -f ~/monsite.lftp

[/shell]

Et voilà, le répertoire ~/backup devrait contenir une image exacte de votre site Internet !

Il ne reste plus qu'à automatiser le backup toutes les nuits (crontab -e):

[shell]

0 1 * * * lftp ~/monsite.lftp

[/shell]

Et si je veux sauver ma base de données WordPress ?

Bonne question Michel... Personnellement j'utilise le plugin WP-DatabaseManager qui me permet de:

  • sauvegarder ma base de donnée dans un des répertoire de mon site Web (donc le backup se fera automatiquement avec la procédure décrite ci-dessus)
  • optimiser ma base de donnée
  • restaurer si besoin ma base de donnée

Et vous, comment faite vous la sauvegarde de votre site ?

  • Bien le bonjour,
    J’ai un script qui tourne toutes les nuits et fait une sauvegarde de mes fichiers et mes bases, ensuite, il me compresse tout, puis me garde un historique de 30 jours…
    Mais j’utilise aussi WP-DatabaseManager pour optimiser ma base…
    Bonne journée

  • Salut Nico,
    Pour les fichiers, je fais également un backup via lftp avec une tâche cron.
    Pour la base de données, j’ai un script cgi php qui tourne tous les matins (très tôt) et me fait un mail avec toutes les bases (enfin, leur backup sql) dans un gzip.
    J’utilisais wp-DatabaseManager, mais ça fait encore un plugin, qui s’appuie sur wp-cron.php de wordpress, et perso j’aime pas trop ce principe, sachant que mon serveur (part gandi) permet l’utilisation des « vraies » tâches cron ^^

  • Pingback: Tweets that mention Sauvegarde automatique de son site Internet -- Topsy.com()

  • Hello,

    J’ai un site sur lequel il y a peu de changements et pour lequel un backup hebdomadaire suffit. Dans un répertoire intitulé backup, j’ai un petit script cgi qui en gros exécute sur le serveur distant une commande mysqldump et renvoie au client http un bref fichier texte précisant « opération réussie », ou non…

    Donc la sauvegarde de la base est stockée dans l’arborescence du site.

    Et j’ai sur mon PC une crontab qui effectue une requête vers le script cgi cinq minutes avant de faire le backup du site, le tout avec wget

    0 22 * * fri wget http://www.monsite/backup/dump.cgi
    5 22 * * fri cd /home/gv/public_html && wget -m ftp://ftp.monsite

  • Jean-Philippe

    Ça tombe bien comme sujet ! Je suis en pleine réflexion et dois mettre ça en place. La méthode que je pense suivre passe par l’utilisation de rsync vers un disque de backup local ou vers un serveur distant en connexion sécurisé. Dans Linux Pratique Hors-Série actuel (N°18) il y a un article bien fait qui en parle. Avec ce programme on peut faire des sauvegarde complètes, incrémentales et aussi une restauration sur des critères de date ou de temps écoulé. Mais bon… je ne connais pas tout, mais je pense qu’associé avec une tache d’automatisation ça peut-être costaud come système de sauvegarde 🙂

  • Albert

    pareil pour les datas mais pour les bases un chti mpack par base envoyé sur les emails des domaines associés 😉

  • Albert

    pardon, tout cela en cron bien entendu

  • lode

    salut

    s’est bizarre la commande

    $ lftp -f ~/&&&.lftp

    me retourne
    open: <a: Nom ou service inconnu

    une erreur dans le script ?

  • theo

    merci beaucoup pour ce tuto ! Je viens de mettre ça en place et ça fonctionne bien 🙂

  • Bonjour,

    J’utilisais cette simple ligne de commande jusqu’à il y a peu :
    lftp ftp://$login:$pwd@$server -e « mirror $src $dst ; quit »

    (penser à initialiser les variables $login, $pwd, $server, $src et $dst)

    J’ai changé pour tester l’outil yafc avec ces lignes :
    yafc $login:$pwd@$server <<**
    get -nrv $src -o $dst
    bye
    **

  • Pour moi c’est rsnapshot

    C’est une couche basée sur rsync qui permet entre autres de :
    1) conserver des versions intermédiaires des fichiers sans trop de consommation d’espace disque (hard links) ;
    2) inclure des backup_script (un simple script bash qui crée un fichier dans le répertoire courant) pour faire des dumps de base de donnée (ou des paquets deb installés, etc) et sauvegarder ceux-ci également ;
    3) faire des sauvegardes par heures, jours, semaines, mois et années, avec rotation configurable. Par exemple j’ai des 5 « snapshots » des dernières heures (toutes les 4 heures), 6 snapshots des 6 derniers jours, 3 shapshots des 3 dernières semaines, etc.

    Pour moi elles se font simplement sur un disque distinct dans le même OS (un disque « backup » de Gandi puisque je suis chez eux également). Mais on peut envoyer les données par SSH (et peut-être FTP aussi ?)

    À part la première sauvegarde, c’est quasi instantané s’il n’y a pas d’énormes changements sur le disque.

    La configuration est très facile, il faut juste penser à ajouter les tâches cron, et le tour est joué !

  • Pingback: Sauvegarde journalisée de votre machine avec RSnapShot()

  • Ou encore l’inévitable rdiff-backup

  • Alexandre D.

    Bonjour, je suis vraiment novice dans les configuration de scripts afin de réaliser des sauvegardes de mon site.

    J’ ai donc trouvé ce site internet qui propose des sauvegardes dans le cloud : http://bit.ly/zkT2S7

  • Yoyo

    Bonjour,
    Pour ma part j’utilise juste deux tâches Cron, une pour les fichiers et une pour la base de données.
    Le plus approchant que j’ai trouvé est sur ce site :
    http://webmastips.com/fr/sauvegarde-de-site-web
    Il manque juste l’instruction en FTP pour la copie distante, mais en tout cas cela backup les fichiers et la base de données sans problème.
    Utilisé sur plusieurs sites, même volumineux sans aucun plantage.
    Pour avoir testé le principe de la « synchro » je trouve qu’il est plus fiable de procéder à une sauvegarde complète, de transférer le fichier entre les deux serveurs, puis restaurer le fichier de backup ! tout étant automatisé, cela fonctionne très bien.
    Si cette expérience peut servir à qqun …
    A+

  • Pingback: Sauvegarde | Pearltrees()