Créer un script de sauvegarde Linux

script sauvegarde linux

Sauvegardez ! Sauvegardez ! Sauvegardez ! On ne le dira jamais assez.
Et bonne nouvelle, sur linux, c’est extrêmement simple.
Ce qui l’est moins c’est de trouver les bons logiciels pour le faire, mais avant tout de définir sa stratégie de sauvegarde et de définir ce que l’on est prêt à perdre comme données.
Voyons cela.

Définir sa stratégie de sauvegarde

Nous allons prendre un cas concret : Nous avons un serveur « web » à backuper.
Sur ce serveur il y a :

  • Des fichiers dans le répertoire /home
  • Des bases de données Mysql

Au moins c’est simple.
Tous les jours, nous allons créer une sauvegarde de mysql pour nos bases de données ainsi qu’une archive de nos fichiers dans /home.
Ces fichiers, nous allons les déplacer une un autre serveur, sur une partition montée via iSCSI.

Script de sauvegarde linux

Nous allons créer un script qui s’exécutera quotidiennement (ou une autre fréquence à votre convenance) il est à placer dans le dossier /etc/cron.daily.
On nommera le fichier backup.sh.

Une fois dans le dossier il faut lui donner les droits nécessaires pour l’exécution :

chmod 700 backup.sh

Voici le script :

#!/bin/bash

# date du jour
backupdate=$(date +%Y-%m-%d)

#répertoire de backup
dirbackup=/backup/backup-$backupdate

# création du répertoire de backup
/bin/mkdir $dirbackup

# tar -cjf /destination/fichier.tar.bz2 /source1 /source2 /sourceN
# créé une archive bz2
# sauvegarde de /home
/bin/tar -cjf $dirbackup/home-$backupdate.tar.bz2 /home

# sauvegarde mysql
/usr/bin/mysqldump --user=xxxx --password=xxxx --all-databases | /usr/bin/gzip > $dirbackup/mysqldump-$backupdate.sql.gz

Les commentaires sont normalement suffisants pour comprendre ce qu’il se passe.
A vous maintenant d’adapter ce script à vos besoins.

A noter que le dossier principal de /backup est un point de montage ISCSI. Il serait idiot de backuper les données sur la même machine 🙂

9 commentairesLaisser un commentaire

  • Svp aider moi je veux un script shell permettant de sauvegarder tous les fichiers images.jpg contenu dans le répertoire /home/BETA/images de l’utilisateur BETA

  • Bonsoir Françoise,

    Et bien pour le lancer il suffit de taper la commande « ./backup.sh » et les données sont sauvegardés dans le dossier indiqué dans « dirbackup ».
    Dans cet exemple « /backup/backup-$backupdate ».
    $backupdate prenant la date du jour, cela donnera quelque chose comme /backup/backup-2017-01-01.

  • Bonjour,
    s’il vous plait je souhaite faire un script bash pour la sauvegarde des données sensibles tout en utilisant LUKS et Veracrypt mais je sais pas comment faire ? est ce que vous pouvez m’aider

  • Bonjour,

    Super sympa ce script, et, de plus, automatisé avec cron (1 sauvegarde par jour, dans le cas montré ici). Ca tombe bien, malgré que j’ai rencontré Linux en 98, la première fois, que je m’en sers déjà depuis longtemps (Debian surtout), ai fait un peu de tout dessus (édition son, image, vidéo, … programmation de logiciel, même un peu de web), il reste pas mal de choses encore que je n’ai pas encore eu le temps de connaitre et que je ne maitrise pas bien. cron fait partie de ces lacunes…

    Je trouve que ça risque de faire beaucoup de données sauvegardées vers la partition /sauvegarde/… . Même en considérant qu’on utilise (par ex) un disque dur externe comme unité de sauvegarde, un disque de 2To (par ex), va se remplir assez vite, si on ne prend pas garde à supprimer quelques anciennes sauvegardes.

    Mais j’aime bien ce script (simple, mais efficace). Il pourrait être adapté pour juste sauvegarder une seule session utilisateur (ici, s’il y en a plusieurs [dans /home/], elles vont toutes partir vers /sauvegarde/…). On devrait pouvoir, par ex, demander au script de lister chacune de ces sessions et créer une sauvegarde par session, et même, pourquoi pas, envoyer les sauvegarde de la session vers un disque dur externe spécifique, celle du vers un autre disque externe, et ainsi de suite… Les combinaisons et solutions sont nombreuses, bien évidemment. A adapter à ses propres besoins.

    De même, une session utilisateur peut contenir énormément de données. Comment faire pour, par ex, ne sauvegarder que les données importantes. Disons, tout sauf les vidéos, musique, images, etc… mais uniquement les données programmes de cette session, comme les paramètres personnels des logiciels installés, les réglages du bureau, etc… Là, encore, pas si simple, et surtout si on veut automatiser ce genre de filtrage.

    Ce script, volontairement simple, donne toutefois un très bon point de départ, que l’on pourra modifier, adapter à nos propres cas de figure.

    Merci.

  • Erratum : je viens de voir qu’à l’envoi de mon texte, quelques mots ont sauté car placés entre dans des ‘inférieur à’ ‘supérieur à’, et qu’ils ont été détectés et filtrés comme des balises html. Mince !

    Il fallait lire, en fait :
    On devrait pouvoir, par ex, demander au script de lister chacune de ces sessions et créer une sauvegarde par session, et même, pourquoi pas, envoyer les sauvegardes de la session de l’utilisateur 1 vers un disque dur externe spécifique, celles de l’utilisateur 2 vers un autre disque externe, et ainsi de suite…

  • Bonjours! Comment restaurer une sauvegarde ftp via backup manager sur mon serveur debian? Il faudrait faire un copier coller? Par exemple, pour restaurer le répertoire /etc il conviendrais de faire mv /etc /etc ( la commande mv écraserai donc l’ancien fichier)?

Vous avez aimé cet article ? Réagissez !

Votre email ne sera pas publié. Les champs requis sont marqués d'une astérisque *