Ceci est une ancienne révision du document !
Table des matières
Backup raid
Objectif
Le raid offre une solution haute disponibilité face à une panne matériel disque.
Pour consolider la sauvegarde face à une suppression (volontaire ou non) il est nécessaire d'ajouter un backup historisé des données.
Solution technique
La recopie des données est assurées par rsync.
La gestion de l'historisation est assurée avec la notion de copie hard link (cp -al). En effet mon disque de backup n'est pas suffisement gros pour assurer une recopie complète n fois.
Attention le hard link permet certe de gagner de la place et de s'affranchir d'une suppression au sein des différentes versions de backup .. mais pas d'une modification : l'inode est le même = le fichier reste le même!
Le plan de sauvegarde est donc le suivant :
Shell de backup
Shell lancé en crontab hebdomadaire :
0 3 * * 0 /mon_rep_de_scripts/rsync_Raid.sh>> /mon_rep_de_log/rsync_Raid.log 2>&1
rsync_Raid.sh
#!/bin/bash echo "################################################################################################" echo "################################################################################################" echo "[$(date "+%Y-%m-%d %H:%M:%S")] - Debut Sauvegarde" # Variables START_TIME=`date +%s` # Pour le compte rendu SOURCE="/mnt/Raid/" DEST="/mnt/disque_samsung/BACKUP_RAID" # Gestion des sauvegardes incrementales echo "[$(date "+%Y-%m-%d %H:%M:%S")] - Gestion des increments" rm -rf ${DEST}.4 mv ${DEST}.3 ${DEST}.4 mv ${DEST}.2 ${DEST}.3 mv ${DEST}.1 ${DEST}.2 cp -al ${DEST}.0 ${DEST}.1 # Lancement synchronisation des donnees source echo "[$(date "+%Y-%m-%d %H:%M:%S")] - Sauvegarde des donnees sources" RSYNC_OPTIONS="--verbose --progress --stats --archive --delete --one-file-system" RSYNC_OPTIONS="${RSYNC_OPTIONS} --exclude=/Dropbox --exclude=/Freebox --exclude=/Videos" # archive = recursive + links + perms + times + group + owner # For a dry run : RSYNC_OPTIONS="${RSYNC_OPTIONS} --dry-run" rsync ${RSYNC_OPTIONS} ${SOURCE} ${DEST}.0 # Compte rendu echo "[$(date "+%Y-%m-%d %H:%M:%S")] - Compte rendu de la sauvegarde" END_TIME=`date +%s` ELAPSED=`expr $END_TIME - $START_TIME` remainder="$(expr $ELAPSED % 3600)" hours="$(expr $(expr $ELAPSED - $remainder) / 3600)" seconds="$(expr $remainder % 60)" minutes="$(expr $(expr $remainder - $seconds) / 60)" echo "Fin du traitement : " `date` " Durée $hours H $minutes min $seconds sec" echo "################################################################################################" echo "################################################################################################"
Avec ça les données sont au chaud .. enfin presque : il faudra envisager un site distant un jour tel le parnoïaque que je suis.