Librox blog

À deux, c’est mieux

Accueil > Serveur > Sauvegarde d’un serveur en ssh

Sauvegarde d’un serveur en ssh

jeudi 18 octobre 2012

Voici comment je sauvegarde mon serveur sur un autre serveur en passant par ssh. Le tout de façon magique avec l’aide de cron. Pour mon cas, je fais une sauvegarde automatique par jour.

Prérequis :

  • Un serveur à sauvegarder sous linux avec rsync et openssh-client installé.
  • Un serveur de stockage sous linux avec rsync et openssh-server installé.
  • Configurer le client pour que root se connecte avec une clé RSA sans passphrase sur le serveur ssh.
  • Créer les dossier de stockage sur le serveur de stockage avec les permissions qui vont bien.

Le programme :

On copie et on adapte le code suivant :

Le fichier exclure (à adapter également) :

Pour moi il est carrément plus long puisque je vire tous les caches de mes sites web.

La mise en place automatique avec cron :

On autorise seulement root à lire, écrire et exécuter le programme :

On fait un lien symbolique de rsync.sh dans cron.daily pour une exécution journalière :

Pourquoi zrsync ? Pour que celui ci s’exécute en dernier. Car ça peut être long. Remarquez que si vous changez /etc/cron.daily par /etc/cron.weekly, votre sauvegarde se fera 1 fois par semaine.

Ensuite si on veut changer l’heure d’exécution de cron.daily, ça se passe dans :

Messages

  • Bonjour,

    je viens de me prendre un serveur VPS et j’ai un NAS sous Linux chez moi, ton article est exactement ce qu’il me faut.

    Seul hic, j’ai configuré le ssh pour interdire la connexion root, est-ce que ça peut marcher quand même ?
    Quand je me connecte avec mon user, j’ai accès à "presque" tout en lecture seule. De plus contrairement à toi, je ne veux pas sauvegarder l’intégralité du serveur, juste les fichiers sous www, la base sql.
    Tous les fichiers de configuration que j’ai modifié dans /etc/ sont déjà copiés chez moi.

    • Ce qu’il faut pour que rsync fonctionne, c’est de pouvoir lire les fichiers afin de les envoyer au serveur distant. Donc la lecture seule suffit. Par contre il te faudra adapter la ligne de code pour sauvegarder uniquement /var/www et /var/mysql :

      rsync -e ssh -avz —delete-after /var/www user@serveur.fr :/home/user/sauv_www/ 1> /dev/null

      rsync -e ssh -avz —delete-after /var/mysql user@serveur.fr :/home/user/sauv_mysql/ 1> /dev/null

      Mais c’est quand même une bonne idée d’exclure les dossiers temporaires ou de cache des sites web pour gagner du temps de synchro. C’est généralement ce qui prends le plus de temps lors de la copie puisque ça change tout les jours, et ça n’a pas d’utilité de les garder.