10 votes

Répertoire de sauvegarde rsnapshot miroir

J'aimerais mettre en miroir un répertoire de sauvegarde utilisé par rsnapshot vers un second emplacement pour plus de sécurité. L'idéal serait d'utiliser rsync avec ssh. Quels arguments dois-je fournir à rsync pour préserver les hardlinks (créés par rsnapshot) et les symlinks, pour supprimer des fichiers, pour copier récursivement, pour supprimer des fichiers dans la cible, etc ? Les fichiers sont tous sur des systèmes de fichiers ext3. De plus, que puis-je faire pour éviter que si la source est corrompue, les défauts soient rsyncisés vers le miroir ?

7voto

larsks Points 23184

Je pense que les options permettant de faire ce que vous voulez sont largement documentées dans le document rsync page de manuel. En particulier, la page de manuel -H option ( --hard-links ) permet la détection des liens durs, et --delete fera en sorte que rsync supprime sur la destination des éléments qui n'existent pas sur la source. Donc peut-être quelque chose comme :

rsync -aH --delete /path/to/src/ /path/to/destination

De plus, que puis-je faire pour éviter que si la source est corrompue, les défauts soient rsyncisés sur le miroir ?

C'est une question délicate. Comment détecter la corruption ? Je pense que la seule vraie solution est d'échelonner la sauvegarde de votre sauvegarde (c'est-à-dire d'effectuer vos sauvegardes réelles sur votre destination principale, puis de les rsynciser sur votre destination secondaire immédiatement avant votre prochaine sauvegarde). De cette façon, si vous détectez un problème, vous avez jusqu'à la prochaine sauvegarde pour rétablir la situation.

Une autre solution consisterait à avoir rsnapshot vers plusieurs destinations, de sorte que vous générez des sauvegardes à partir de votre source d'origine à deux endroits distincts. Ainsi, si l'un d'eux est endommagé, le second ne devrait pas être affecté.

1voto

Paperghost Points 100

Pour éviter la copie de données corrompues, vous pouvez conserver une sauvegarde hebdomadaire et espérer que vous remarquerez la corruption à la source avant de perdre toutes vos sauvegardes. Le meilleur moyen est d'utiliser -c et de comparer les sommes de contrôle de la source et de la destination pour déterminer si le fichier doit être copié ou non. Le seul inconvénient est qu'il doit lire l'intégralité du fichier, ce qui ralentit le processus de sauvegarde.

#!/bin/sh
# Create a Backup of Today
# Definitions
sevendaysago=$(date --date='6 days ago' +%Y-%m-%d-%A)
# Delete backups from 7 days ago
rm -rf /storage/backups/$sevendaysago
mkdir -p /storage/backups/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$username

rsync -aHvz /storage/`date --date=yesterday +\%Y-\%m-\%d`-`date --date=yesterday +\%A`/$host/$user/ /storage/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$user/

rsync -acHvz -e ssh --delete --exclude='logs' tim@tim.tim.net:/home/tim/ /storage/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$user/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X