
rsync synchronise /home/deny dans /home/sauve et place les élements supprimés ou modifiés de /home/deny dans un sous-répertoire avec la date et l'heure , dans le répertoire incremental Le script se lance avec sh increment (chmod +x increment pour le rendre exécutable)
|
|
#!/bin/sh
DATE=`date +$Y-$m-$d_$H-$M-$S` ssh machine_distante mkdir -p /home/deny/incremental/${DATE}/ /usr/bin/rsync -av -e ssh --stats --delete --backup \ --backup-dir=/home/deny/incremental/${DATE}/ \ /home/deny/ \ machine_distante=/home/sauve/ |
Voici un script qui permet de sauvegarder de façon synchronisée mon répertoire /home et celui de mes utilisateurs vers un stockage externe (en l’occurrence, un disque dur USB).
Cette méthode n’est qu’une version améliorée d’une simple commande rsync dont je ne vous détaillerez pas les options tant elles sont classiques.
Cependant, le script est intéressant en cela qu’il crée un fichier log et qu’il vérifie la présence du support de destination avant de s’exécuter.
Pour ce faire, la date de la sauvegarde est récupérée depuis la commande date avant d’être consolidée dans le nom du fichier log qui sera alimenté durant le backup des données.
|
#!/bin/bash # Initialisations date_sauvegarde=$(date +%Y-%m-%d_%H-%M-%S) fichier_log="/media/disk/log_backup_$date_sauvegarde" repertoire_destination="/media/disk/" # Détecter la présence du volume de destination et interrompre l'opération si nécessaire if [ ! -e "$repertoire_destination" ]; then echo "Le script de sauvegarde n'a pas trouvé le répertoire de destination $repertoire_destination" exit fi # Demander la confirmation de l'utilisateur echo "L'opération de sauvegarde peut être très longue. Voulez-vous continuer ? (o/n)" read confirmation if [ "${confirmation}" == 'o' ]; then echo "Début de sauvegarde le $(date +%d/%m/%Y) à $(date +%H:%M:%S)" | tee $fichier_log echo "" | tee -a $fichier_log echo "rsync --recursive --times --perms --owner --group --devices --specials --verbose --progress --delete --links --compress --stats /home/ $repertoire_destination | tee -a $fichier_log" | tee -a $fichier_log echo "" | tee -a $fichier_log rsync --recursive --times --perms --owner --group --devices --specials --verbose --progress --delete --links --compress --stats /home/ "$repertoire_destination" | tee -a "$fichier_log" echo "" | tee -a $fichier_log echo "Fin de sauvegarde le $(date +%d/%m/%Y) à $(date +%H:%M:%S)" | tee -a $fichier_log else exit fi |