Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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