naos 2017/10/26 23:31

Scripts de sauvegarde automatique des fichiers

testé sur CentOS 7

Sauvegarde complète

#!/bin/bash
date=$(date +%Y-%m-%e)
nb_err=0
 
echo $0 >> /var/log/sauvegarde-complete-$HOSTNAME-$date.txt
 
	tar cvzf /mnt/sauvegardes/completes/etc/etc-sauvegarde-complete-$HOSTNAME-$date.tar.gz /etc && echo "Sauvegarde complète du répertoire /etc: OK" >> /var/log/backup-$HOSTNAME-$date.log || echo "Echec de la sauvegarde du répertoire /etc" >> /var/log/backup-$HOSTNAME-$date.log
let "nb_err = $nb_err + $?"
 
	tar cvzf /mnt/sauvegardes/completes/root/root-sauvegarde-complete-$HOSTNAME-$date.tar.gz /root && echo "Sauvegarde complète du répertoire /root: OK" >> /var/log/backup-$HOSTNAME-$date.log || echo "Echec de la sauvegarde du répertoire /root" ] >> /var/log/backup-$HOSTNAME-$date.log
let "nb_err = $nb_err + $?"
 
	tar cvzf /mnt/sauvegardes/completes/home/home-sauvegarde-complete-$HOSTNAME-$date.tar.gz /home && echo "Sauvegarde complète du répertoire /home: OK" >> /var/log/backup-$HOSTNAME-$date.log || echo "Echec de la sauvegarde du répertoire /home" >> /var/log/backup-$HOSTNAME-$date.log
let "nb_err = $nb_err + $?"
 
if nb_err>=1
	then echo | mail -s "Erreur lors de la sauvegarde complète" -q /var/log/backup-$HOSTNAME-$date.log root@localhost
	else echo | mail -s "Sauvegarde complète réussie" -q /var/log/backup-$HOSTNAME-$date.log root@localhost
fi
 
cat /tmp/backup-$HOSTNAME-$date.log >> /var/log/backup.log

Sauvegarde complète distante

#!/bin/bash
date=$(date +%Y-%m-%e)
nb_err=0
 
scp /mnt/sauvegardes/completes/etc/etc-sauvegarde-complete-$HOSTNAME-$date.tar.gz operateur@192.168.20.129:/home/operateur/sauvegardes/completes/etc && echo "Sauvegarde complète distante du répertoire /etc: OK" >> /var/log/backup-$HOSTNAME-$date.log || echo "Echec de la sauvegarde distante complète du répertoire /etc" >> /var/log/backup-$HOSTNAME-$date.log
let "nb_err = $nb_err + $?"
 
if $?=0
	then ssh operateur@192.168.20.129 "find /home/operateur/sauvegardes/completes/etc-sauvegarde-complete*-.tar.gz -mtime +1 -exec rm "{}" \;" && "Suppression de la dernière sauvegarde complète distante du répertoire /etc: OK" >> /var/log/backup-$HOSTNAME-$date.log || echo "Echec de la suppression de la dernière sauvegarde complète distante du répertoire /etc:" >> /var/log/backup-$HOSTNAME-$date.log
fi
let "nb_err = $nb_err + $?"
 
if nb_err>=1
	then echo | mail -s "Erreur lors de la sauvegarde complète distante du répertoire /etc" -q /var/log/backup-$HOSTNAME-$date.log root@localhost
	else echo | mail -s "Succès de la sauvegarde complète distante du répertoire /etc" -q /var/log/backup-$HOSTNAME-$date.log root@localhost
fi
 
cat /tmp/backup-$HOSTNAME-$date.log >> /var/log/backup.log

Sauvegarde système

#!/bin/bash
date=$(date +%Y-%m-%e)
 
rpm -qa >> /mnt/sauvegardes/systeme/paquets-sauvegarde-$HOSTNAME-$date.txt
echo "Sauvegarde de la liste des paquets installés: $(if $? = 0 then OK else KO)" >> /var/log/backup-paquets-$HOSTNAME-$date.log
 
if $?=1
	then echo | mail -s "Erreur lors de la sauvegarde de la liste des paquets" -q /var/log/backup-paquets-$HOSTNAME-$date.log root@localhost
	else echo | mail -s "Sauvegarde de la liste des paquets réussie" -q /var/log/backup-paquets-$HOSTNAME-$date.log root@localhost
fi
 
mv /var/log/backup-paquets-$HOSTNAME-$date.log >> /var/log/backup.log

Sauvegarde MBR

#!/bin/bash
date=$(date +%Y-%m-%e)
        dd if=/dev/sda of=/mnt/sauvegardes/MBR/MBR-Bak-$HOSTNAME-$date.bin bs=512 count=1
echo "Sauvegarde du MBR: $(if $? = 0 then OK else KO)" >> /tmp/backup-MBR-$HOSTNAME-$date.log
 
if $?>=1
	then echo | mail -s "Erreur lors de la sauvegarde du MBR" -q /tmp/backup-MBR-$HOSTNAME-$date.log root@localhost
	else echo | mail -s "Sauvegarde du MBR réussie" -q /tmp/backup-MBR-$HOSTNAME-$date.log root@localhost
fi
 
cat /tmp/backup-MBR-$HOSTNAME-$date.log >> /var/log/backup.loge

Sauvegarde incrémentielle

#!/bin/bash
date=$(date +%Y-%m-%e)
nb_err=0
 
echo $0 >> /tmp/sauvegarde-incrementielle-$HOSTNAME-$date.txt
 
	find / -mtime -1 | tar xvf /mnt/sauvegardes/incrementielles/etc/etc-sauvegarde-incrementielle-$HOSTNAME-$date.tar.gz /etc && echo "Sauvegarde incrémentielle du répertoire /etc: OK" >> /var/log/backup-$HOSTNAME-$date.log || echo "Echec de la sauvegarde incrémentielle du répertoire /etc" >> /tmp/backup-$HOSTNAME-$date.log
let "nb_err = $nb_err + $?"
 
	find / -mtime -1 | tar xvf /mnt/sauvegardes/incrementielles/root/root-sauvegarde-incrementielle-$HOSTNAME-$date.tar.gz /root && echo "Sauvegarde incrémentielle du répertoire /root: OK" >> /var/log/backup-$HOSTNAME-$date.log || echo "Echec de la sauvegarde incrémentielle du répertoire /root" >> /tmp/backup-$HOSTNAME-$date.log
let "nb_err = $nb_err + $?"
 
	find / -mtime -1 | tar xvf /mnt/sauvegardes/incrementielles/home/home-sauvegarde-incrementielle-$HOSTNAME-$date.tar.gz /home && echo "Sauvegarde incrémentielle du répertoire /home: OK" >> /var/log/backup-$HOSTNAME-$date.log || echo "Echec de la sauvegarde incrémentielle du répertoire /home" >> /tmp/backup-$HOSTNAME-$date.log
let "nb_err = $nb_err + $?"
 
if nb_err>=1
	then echo | mail -s "Erreur lors de la sauvegarde incrémentielle" -q /var/log/backup-$HOSTNAME-$date.log root@localhost
	else echo | mail -s "Sauvegarde incrémentielle réussie" -q /var/log/backup-$HOSTNAME-$date.log root@localhost
fi
 
mv /tmp/backup-$HOSTNAME-$date.log >> /var/log/backup.log

Sauvegarde par snapshots

#!/bin/bash
lvcreate -n monbackup -L 2G corsair
mkfs.ext4 /dev/corsair/monbackup
sync && lvcreate -s -n monsnapshot -L 2G corsair/maracine
mkdir /mon_snapshot
mount /dev/corsair/monsnapshot /mon_snapshot
 
cp -ax /mon_snapshot/* /ma_sauvegarde/

Paramètres Crontab

0 1 0 0 6	root	/root/sauvegarde_complete.sh && /root/sauvegarde_complete_distante.sh
0 1 0 0 0-6	root	/root/sauvegarde_incrementielle.sh
0 0 0 0 7       root	/root/sauvegarde_MBR.sh
0 4 0 0 6	root	find /mnt/sauvegardes/completes/etc-sauvegarde-complete*-.tar.gz -mtime +8 -exec rm "{}" \;
0 5 0 0 6	root	find /mnt/sauvegardes/incrementielles/etc-sauvegarde-incrementielle*-.tar.gz -mtime +2 -exec rm "{}" \;
  • scripts_sauvegarde.txt
  • Dernière modification: 2017/10/26 23:52
  • par naos