Ceci est une ancienne révision du document !
Table des matières
Backup raid
Sauvegarde locale
Objectif
Le raid 1 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, à chaque itération :
Avec ça les données commencent à être au chaud
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 "################################################################################################"
Sauvegarde distante
Objectif
La sauvegarde locale couvre le risque d'un incident materiel sur la grappe RAID. Pour le vol ou l'incendit c'est un autre site qu'il nous faut.
Solution technique
Profitant d'un lien fibre à la maison ainsi que dans la famille et d'un disque MybookWorld rooté, la sauvegarde distante se base sur le script précédent en utilisant un rsync over ssh :
Le script est à dupliquer et modifier tel que :
rsync -e "ssh -pmon_port_d_ecoute -i ma_clef_rsa" ${RSYNC_OPTIONS} ${SOURCE} user@ip_distante:${DEST}
Un crontab dans la foulée est on est habillé pour l'hiver