Script de sauvegarde journalier en shell sur Linux

Suite à la restructuration de mes serveurs grâce à la virtualisation sur mon petit dernier, j’ai remis à plat toutes les sauvegardes et je vais vous faire partagé mon script qui fait une sauvegarde journalière en préfixant le jour de la semaine. Pour info mes VM tournent sous Debian Squeeze.

Je vais vous proposer 2 versions, une avec sauvegarde sur le réseau (celle que j’utilise) et l’autre en local. Le fichier « sauvegarde.sh » se trouve dans mon cas dans le /root/, votre script devant s’adapter.

Version réseau : (Il faut que smbfs soit installé, sinon « apt-get install smbfs »)

#!/bin/sh

# Création du répertoire sauvegardes et montage du
# répertoire partagé sur le réseau (Backup) avec l'option
# "-o username='XXXXX',password='YYYYY'" qui permet
# l'authentification au cas où. XXXXX et YYYYY devant
# prendre les bonnes valeurs.
mkdir sauvegardes
mount -t smbfs //192.168.A.B/Backup /root/sauvegardes/ -o 
username='XXXXX',password='YYYYY'

# Sauvegarde d'un dossier par exemple WWW
tar -czf /tmp/$(date +\%A)_WWW.tar.gz /var/www
mv /tmp/$(date +\%A)_WWW.tar.gz /root/sauvegardes/$(date 
+\%A)_WWW.tar.gz

# Sauvegarde d'une BDD MySQL
mysqldump -f -F -e --user=LOGIN --password=PASSWORD NOM_
BDD > /tmp/$(date +\%A)_SQL.sql
tar -czf /tmp/$(date +\%A)_SQL.tar.gz /tmp/$(date +\%A)_
SQL.sql
rm /tmp/$(date +\%A)_SQL.sql
mv /tmp/$(date +\%A)_SQL.tar.gz /root/sauvegardes/$(date 
+\%A)_SQL.tar.gz

# Démontage du répertoire partagé sur le réseau et
# suppression du dossier
umount /root/sauvegardes/
rmdir sauvegardes

Version local :

#!/bin/sh

# Sauvegarde d'un dossier par exemple WWW
tar -czf /tmp/$(date +\%A)_WWW.tar.gz /var/www
mv /tmp/$(date +\%A)_WWW.tar.gz /root/sauvegardes/$(date 
+\%A)_WWW.tar.gz

# Sauvegarde d'une BDD MySQL
mysqldump -f -F -e --user=LOGIN_BDD --password=PASSWORD_ 
BDD NOM_BDD > /tmp/$(date +\%A)_SQL.sql
tar -czf /tmp/$(date +\%A)_SQL.tar.gz /tmp/$(date +\%A)_
SQL.sql
rm /tmp/$(date +\%A)_SQL.sql
mv /tmp/$(date +\%A)_SQL.tar.gz /root/sauvegardes/$(date 
+\%A)_SQL.tar.gz

Le script étant copier, vous devez maintenant lui donner les droits.

$ chmod 777 /root/sauvegarde.sh
$ chmod +x /root/sauvegarde.sh

Et pour automatiser la sauvegarde tous les soir à 23h00 :

$ crontab -e

# Vous devez copier la ligne ci-dessous à la fin de
# l'éditeur. 
0 23 * * * /root/sauvegarde.sh

Et voilà, vous avez maintenant une sauvegarde journalière et donc un historique sur 7 jours. N’hésitez pas à faire des propositions d’améliorations ou feedback dans les commentaires.

2 commentaires sur “Script de sauvegarde journalier en shell sur Linux

  1. salut svp j aimerai savoir quel sont les deux fichier precedement poster merci

  2. bonjour, j’ai un soucis et je suis nouveaux
    il y a 3 serveurs linux
    A: Serveur principal, adresse ip : 192.168.1.2
    B: Serveur de partage de fichiers (samba), adresse ip : 192.168.1.3
    C: Serveur externe, adresse ip : 213.27.131.240

    On souhaite réaliser une sauvegarde incrémentale du partage \\192.168.1.3\partage\ du serveur B sur le dossier /backup du serveur C
    Le serveur B ne disposant pas de connexion internet, c’est le serveur A qui lancera la tâche de sauvegarde vers le serveur C
    il faut écrire script permettant de monter le partage sur le serveur A et de réaliser la sauvegarde demandée.
    Décrire précisément comment programmer cette sauvegarde le mardi et le jeudi à 3h du matin.

    Merci de m’aider