Il y a environ 4 ans, j’avais fait un script de sauvegarde complet mais un peu rebutant à cause du nombre de variables. On le trouve encore dans T&A et dans le wiki.
Aujourd’hui, j’ai refait quelque chose de plus simple, toujours avec “rsync
”, qui ne nécessite que peu de personnalisation : les trois variables du haut et les lignes de commande rsync
Pour ces dernières, je pars de mon exemple où j’utilise une partition pour tout le système sauf la “/home
” et une autre partition pour la “/home
”. C’est à adapter à votre situation.
Les lignes de commande ‘rsync
’ tiennent compte de fichiers “exclure
” où sont énumérés les fichiers à exclure de la sauvegarde (voir le fil de Josephtux à ce sujet ). Là aussi, il vous faudra accommoder.
Pour les variables des partitions cibles, j’emploie les PARTLABEL
s, qui ont l’avantage d’être uniques et pérennes, mais vous pouvez les remplacer par les LABEL
s, les UUID
s ou les PARTUUID
s, ou même par les classique /dev/sdXY
. Dans ce dernier cas, prenez bien garde à ce que vous faites.
Voici donc le code à coller dans un fichier que vous rendrez exécutable, comme pour tout script, et que vous placerez selon votre habitude. La mienne, c’est /usr/local/bin
Si besoin explications supplémentaires, n’hésitez pas.
#!/bin/bash
### BEGIN INIT INFO
# Nom du script : sauve
# Auteur : Ricardo
# Date de création : mai 2015 --- amélioré en 01/2016 = utilisation des PARTLABELs
# Utilité : sauvegarde de ordibureau sur 2sDD
### END INIT INFO
PtMontage='/mnt'
cibleR='/dev/disk/by-partlabel/sauve2dDD'
cibleH='/dev/disk/by-partlabel/sauve-ricardo2dDD'
if [ ! -e $cibleR ] # teste l'absence de la partition cible
then
echo "$cibleR est introuvable"
exit 1 # on sort
else # si la partition est trouvée
sudo mount -t ext4 $cibleR $PtMontage # on monte la partition cible sur le point de montage
if (("$?" > 0)) # si retour commande précédente = faux
then
echo "erreur de montage"
exit 1 # on sort
else # si retour = 0 (bon), on exécute :
sudo rsync -av --del --exclude-from=/root/exclure / $PtMontage
fi
fi
echo
printf '\E[30;45m'" sauve / terminé " ; tput sgr0
echo
echo
sleep 2
sudo umount $PtMontage
echo "Point de montage libéré"
sleep 2
echo
echo "On passe à /home/ricardo"
sleep 2
echo
if [ ! -e $cibleH ] # teste l'absence de la partition cible
then
echo "$cibleH est introuvable"
exit 1 # on sort
else # si la partition est trouvée
sudo mount -t ext4 $cibleH $PtMontage # on monte la partition cible sur le point de montage
if (("$?" > 0)) # si retour commande précédente = faux
then
echo "erreur de montage"
exit 1 # on sort
else # # si retour = 0 (bon), on éxécute :
sudo rsync -av --del --exclude-from=/home/ricardo/exclure /home/ricardo/ $PtMontage
fi
fi
sudo umount $PtMontage
echo
printf '\E[30;45m'" sauvegarde complète et démontage effectué " ; tput sgr0
echo
sleep 2
echo
exit 0