#1 Le 14/08/2010, à 15:56
- NooP
Script de sauvegarde rsync lors de l'extinction de la machine
Bonjour,
Je suis entrain de me casser les dents sur un problème (Il y a plus simple, comme faire un script /etc/init.d, mais le but est de me servir d'upstart).
Alors, voici le problème :
Je souhaite exécuter un script lors de l'extinction / reboot de la machine. Ce script fait un rsync sur un serveur, afin de sauvegarder 3 répertoires (/etc, /home et /virt). /virt contient mes machines VirtualBox dans lesquelles je fais des tests.
J'ai créé un script upstart /etc/init/backup qui contient :
# backup - backup important directories at shutdown / reboot
#
# This task is run on level 0 and 6 to backup via rsync important
# directories.
description "backup important directories"
start on runlevel [06]
task
exec /home/noop/bin/backup
Et le script de sauvegarde /home/noop/bin/backup :
#!/bin/bash
DST="serveur::sauvegardes/pc"
JOUR=`date +%Y-%m-%d_%H-%M`
DIR="etc"
DELAY="15"
ssh root@serveur -i /home/noop/.ssh/id_dsa "mkdir -p /backup/pc/$DIR/main"
ssh root@serveur -i /home/noop/.ssh/id_dsa "mkdir -p /backup/pc/$DIR/old_data/$JOUR"
ssh root@serveur -i /home/noop/.ssh/id_dsa "find /backup/pc/$DIR/old_data/ -atime +$DELAY -exec rm -rf {} \;"
rsync --force --ignore-errors --delete --backup --backup-dir=/pc/$DIR/old_data/$JOUR -av /$DIR/ ${DST}/$DIR/main
DIR="home"
DELAY="7"
ssh root@serveur -i /home/noop/.ssh/id_dsa "mkdir -p /backup/pc/$DIR/main"
ssh root@serveur -i /home/noop/.ssh/id_dsa "mkdir -p /backup/pc/$DIR/old_data/$JOUR"
ssh root@serveur -i /home/noop/.ssh/id_dsa "find /backup/pc/$DIR/old_data/ -atime +$DELAY -exec rm -rf {} \;"
rsync --force --ignore-errors --delete --backup --backup-dir=/pc/$DIR/old_data/$JOUR -av /$DIR/ ${DST}/$DIR/main
DIR="virt"
DELAY="2"
ssh root@serveur -i /home/noop/.ssh/id_dsa "mkdir -p /backup/pc/$DIR/main"
ssh root@serveur -i /home/noop/.ssh/id_dsa "mkdir -p /backup/pc/$DIR/old_data/$JOUR"
ssh root@serveur -i /home/noop/.ssh/id_dsa "find /backup/pc/$DIR/old_data/ -atime +$DELAY -exec rm -rf {} \;"
rsync --force --ignore-errors --delete --backup --backup-dir=/pc/$DIR/old_data/$JOUR -av /$DIR/ ${DST}/$DIR/main
exit 0
Ceci fonctionne correctement les 3/4 du temps (quand il y a peu de données), Mais si jamais je modifie une machine virtuelle, qui de ce fait entraine une nouvelle synchronisation de /virt avec plusieurs GO de données, mon PC s'éteind avant que la synchronisation ne soit effectuée complètement.
La question est : Y a t-il quelqu'un dans la salle qui connaisse suffisamment upstart pour m'expliquer ce que j'oublie de faire dans le script upstart pour qu'il mette en attente la fin du processus d'arrêt/reboot tant que son exécution n'est pas terminée ?
Dernière modification par NooP (Le 14/08/2010, à 16:09)
Votez Macron, vous l'aurez dans le fion !
Hors ligne