Rate this article :
4.8/5 | 5 opinion
This article was useful to you ?
Yes
No
Vous avez noté 0 étoile(s)
Procédure
Rsync vous permet de synchroniser des fichiers par le biais de ligne de commande afin de vous permettre de sauvegarder des fichiers d'un endroit à un autre en les synchronisant en fonction des sources.
Le script ci-dessous va vous permettre d'effectuer une sauvegarde totale par mois ainsi qu'une sauvegarde partielle, une fois par semaine.
Le script suivant va vous permettre de mettre en place un script de sauvegarde distant avec Rysnc. Le script va tester la présence du dossier source, tester l'accessibilité du serveur et créer un nouveau dossier chaque mois dans lequel il va insérer une sauvegarde complète.
#!/bin/sh mois=`date +%B` jour=`date +%d-%m-%Y` heure=`date +%T` log="/home/user/logs_sauvegardes" local="/user/dossier" distant="/files/sauvegardes_$mois/" hostssh="ip_serveur" userssh="identifiant" compteur=5 retention=`date +%B --date='1 month ago'` nom() { echo "-------------------------------------------------------------" > $log/sauvegarde_$jour.log echo -e "Sauvegarde de $local du $(date +%d-%B-%Y)" >> $log/sauvegarde_$jour.log echo "-------------------------------------------------------------" >> $log/sauvegarde_$jour.log } # Si le répertoire contenant les logs n'existe pas, celui-ci sera crée. if [ ! -d $log ];then mkdir $log fi # On teste la présence du dossier source ET que le serveur répond bien au ping recus=$(ping -c $compteur $hostssh | grep 'received' | awk -F',' '{ print $2 }' | awk '{print $1 }') > /dev/null 2>&1 if [[ ! -d $local ]] && [[ $recus -eq 0 ]];then nom echo -e "$jour-$heure :\n" >> $log/sauvegarde_$jour.log echo -e "$local n'existe plus ou est inaccessible.\n\nServeur inaccessible ($hostssh : $compteur paquets transmis, $recus paquets reçus).\n\nAucune sauvegarde effectuée." >> $log/sauvegarde_$jour.log exit # On teste seulement la présence du dossier source elif [ ! -d $local ];then nom echo -e "$jour-$heure : $local n'existe plus ou est inaccessible.\n\nAucune sauvegarde effectuée." >> $log/sauvegarde_$jour.log exit # On teste seulement le ping du serveur elif [ $recus -eq 0 ];then nom echo -e "$jour-$heure : Serveur inaccessible ($hostssh : $compteur paquets transmis, $recus paquets reçus).\n\nAucune sauvegarde effectuée." >> $log/sauvegarde_$jour.log exit fi echo "-------------------------------------------------------------" > $log/sauvegarde_$jour.log echo "Sauvegarde de $local du $(date +%d-%B-%Y)" >> $log/sauvegarde_$jour.log echo "-------------------------------------------------------------" >> $log/sauvegarde_$jour.log # Heure de début du transfert dans le journal echo "Heure de demarrage de la sauvegarde : $(date +%T)" >> $log/sauvegarde_$jour.log echo "-------------------------------------------------------------" >> $log/sauvegarde_$jour.log # Transfert des fichiers rsync -avz --stats --protect-args --delete-after -e ssh $local $userssh@$hostssh:$distant >> $log/sauvegarde_$jour.log # -a : mode archivage ( équivalent -rlptgoD ). # -z : compression des données pendant le transfert. # -e : pour spécifier l’utilisation de ssh # -- stats : donne des informations sur le transfert (nombre de fichiers…). # --protect -args : Si vous avez besoin de transférer un nom de fichier qui contient des espaces , vous pouvez le spécifier avec cette option. # --delete-after : supprime les fichiers qui n’existent plus dans la source après le transfert dans le dossier de destination. status=$? echo "" >> $log/sauvegarde_$jour.log # Codes de retour rsync case $status in 0) echo Succès >> $log/sauvegarde_$jour.log;; 1) echo Erreur de syntaxe ou d'utilisation >> $log/sauvegarde_$jour.log;; 2) echo Incompatibilité de protocole >> $log/sauvegarde_$jour.log;; 3) echo Erreurs lors de la sélection des fichiers et des répertoires d'entrée/sortie >> $log/sauvegarde_$jour.log;; 4) echo Action non supportée : une tentative de manipulation de fichiers 64-bits sur une plate-forme qui ne les supporte pas \ ; ou une option qui est supportée par le client mais pas par le serveur. >> $log/sauvegarde_$jour.log;; 5) echo Erreur lors du démarrage du protocole client-serveur >> $log/sauvegarde_$jour.log;; 6) echo Démon incapable d'écrire dans le fichier de log >> $log/sauvegarde_$jour.log;; 10) echo Erreur dans la socket E/S >> $log/sauvegarde_$jour.log;; 11) echo Erreur d'E/S fichier >> $log/sauvegarde_$jour.log;; 12) echo Erreur dans le flux de donnée du protocole rsync >> $log/sauvegarde_$jour.log;; 13) echo Erreur avec les diagnostics du programme >> $log/sauvegarde_$jour.log;; 14) echo Erreur dans le code IPC>> $log/sauvegarde_$jour.log;; 20) echo SIGUSR1 ou SIGINT reçu >> $log/sauvegarde_$jour.log;; 21) echo "Une erreur retournée par waitpid()" >> $log/sauvegarde_$jour.log;; 22) echo Erreur lors de l'allocation des tampons de mémoire principaux >> $log/sauvegarde_$jour.log;; 23) echo Transfert partiel du à une erreur >> $log/sauvegarde_$jour.log;; 24) echo Transfert partiel du à la disparition d'un fichier source >> $log/sauvegarde_$jour.log;; 25) echo La limite --max-delete a été atteinte >> $log/sauvegarde_$jour.log;; 30) echo Dépassement du temps d'attente maximal lors d'envoi/réception de données >> $log/sauvegarde_$jour.log;; 35) echo Temps d’attente dépassé en attendant une connection >> $log/sauvegarde_$jour.log;; 255) echo Erreur inexpliquée >> $log/sauvegarde_$jour.log;; esac echo "-------------------------------------------------------------" >> $log/sauvegarde_$jour.log # Heure de fin dans le journal echo "Heure de fin de la sauvegarde : $(date +%T)" >> $log/sauvegarde_$jour.log echo "-------------------------------------------------------------" >> $log/sauvegarde_$jour.log # On supprime les sauvegardes suivant la rétention. ssh $userssh@$hostssh rm -rf "sauvegardes_$retention" exit
source : GitHub tuxmika
Vous êtes désormais en mesure de créer un script de sauvegarde distante avec Rsync afin de transférer les fichiers et dossiers sur votre espace de sauvegarde en ligne avec LWS. Vous pouvez lancez votre script par le biais d'une tâche cron afin que ce dernier démarre une fois par semaine.
N'hésitez pas à partager vos questions et vos remarques !
Rate this article :
4.8/5 | 5 opinion
This article was useful to you ?
Yes
No
2mn reading
Comment ajouter une clé RSA sur le service Rsync SCP drive?
1mn reading
Comment utiliser Rsync pour sauvegarder un site web Ispconfig ?
0mn reading
Comment faire une sauvegarde de son site avec LWS Drive ?
4mn reading
Utilitaire backup2l restauration