Je veux que mes données soient au maximum sécurisées afin de ne jamais les perdre, je fais donc très souvent des sauvegardes de ma station de travail vers mon serveur.

Mon serveur étant en ligne 24/24 je vais le charger de lancer les sauvegardes, mais ma station de travail n'est allumée que au moment où je l'utilise.

J'ai donc crée un script shell pour que mon serveur test si la machine est allumée et effectue une sauvegarde si celle - ci est allumée. Je vous partage donc mon script :

#! /bin/sh
#script by TitaX ( titax@rezium.net )
#http://www.titaxium.com http://www.rezium.net http://blog.titaxium.org
#Script qui lance une sauvegarde d'une machine seulement si celle-ci est UP

#variables#
machine="nom_ou_ip_de_votre_machine"
#script de sauvegarde a lancer au cas ou la machine est UP
script="/chemin/vers/script/script_de_sauvegarde.sh"
ping="ping -c 1 -w 3 -q $machine"
jour=`date +%d-%m-%Y`
log_ok="/var/log/sauvegardes/sauvegarde_OK_"$machine"_du_"$jour".log"
log_ko="/var/log/sauvegardes/sauvegarde_KO_"$machine"_du_"$jour".log"
rep_log="/var/log/sauvegardes/"

#script#
#debut du script
echo "debut de la tentative de sauvegarde de "$machine""

#test si la machine cible est UP
if $ping | grep -E "min/avg/max/mdev" > /dev/null
then
#si ping OK
echo ""$machine" est online"
echo "Debut de la sauvegarde de "$machine""
#creation fichier de log
touch "$log_ok"
echo "-" >> "$log_ok"
echo "Heure de debut de sauvegarde:" >> "$log_ok"
date >> "$log_ok"
echo "-" >> "$log_ok"
echo ""$machine" est UP donc sauvegarde en cours" >> "$log_ok"
#execution du script
$script

echo "-" >> "$log_ok"
echo "Heure de fin de sauvegarde:" >> "$log_ok"
date >> "$log_ok"
echo "-" >> "$log_ok"
echo "Les donnees de "$machine" sont bien sauvegardees" >> "$log_ok"

#si ping KO
else
#creation fichier de log
touch "$log_ko"
echo "-" >> "$log_ko"
echo "Heure de tentative de sauvegarde:" >> "$log_ko"
date >> "$log_ko"
echo "-" >> "$log_ko"
echo ""$machine" est pas UP donc pas de sauvegarde" >> "$log_ko"
echo ""$machine" est offline"
fi

# On detruit les fichiers vieux de plus de 30 jours
find "$rep_log" -atime +30 -exec rm -f {} \;

#fin du script
echo "fin de la tentative de sauvegarde de "$machine""
#fin script---#

Le script est téléchargeable en cliquant sur ce lien.

Il vous suffit ensuite de lui appliqué le CHMOD +x pour le rendre executable et de l'ajouter à votre crontab grâce à la commande crontab -e comme cela par exemple :

15 23 * * * /chemin/vers/votre/script

Pour une execution tous les jours à 23h15.

Aussi ce n'est pas ce script qui sauvegarde en effet il lance un autre script au cas où la machine cible réponds correctement au ping, le cscript de sauvegarde à proprement dit pourra être de cette forme :

#!/bin/sh
rsync -ave ssh oracle:/mnt/data/ /backup/data

N'hésitez pas à critiquer et donner votre avis sur ce script en commentaire pour que je puisse l'améliorer.

A+