Accueil > Forum > > > > Zénity, rsync, script bash de sauvegarde de répertoires sur disque usb
Zénity, rsync, script bash de sauvegarde de répertoires sur disque usb
lundi 18 janvier 2010 à 15:43:58 |
Zénity, rsync, script bash de sauvegarde de répertoires sur disque usb

stooff
|
Bonjour à tous.
Ne trouvant pas de rubrique bash, bourne shell ou assimilé, je poste dans la rubrique la plus proche du contenu de ce post.
Ne trouvant pas de logiciel à la fois hyper simple et surtout opensource, ceci afin de réaliser mes sauvegarde journalière sur disque USB. Je me suis mis en quête de le réaliser.
Il permet d'avoir une icone permettant de lancer la sauvegarde via zenity (simplissime) et utilisant rsync (puissant, robuste, etc ...). Malheureusement il y a un hic dans une des fonctions (not function) de zenity permettant de fermer la fenetre de sauvegarde et coupant ainsi rsync dans sa lancée. Mieux qu'un long discours : le script !
Merci de me donner vos impressions et vos commentaires. Et si vous pensez pouvoir m'aider, un grand merci à vous.
Code :
#!/bin/bash
## initialisation des variables de répertoire
HOME_SRC_REP=/home/$USER
HOME_DEST_REP=/media/NTFSDATA/BACKUP/$USER
DEST_REP=/media/NTFSDATA/BACKUP/
SYS_REP=/media/NTFSDATA/BACKUP
Finish="0"
#Test de REP_EXCLUS sinon creation
if ! test -e $REP_EXCLUS
then touch $REP_EXCLUS
fi
# Lancement de l'icone globale en barre des taches
exec 3> >(zenity --notification --window-icon="$SYS_REP/.icons/loaded.png" --listen --text="Sauvegarde USB")
## fonction de detection du disque USB via la presence du repertoire DEST_REP
function Detect_USBHDD
{
## Boucle de test du disque dur
if ! test -e $DEST_REP; then
echo "message:Veuillez brancher votre disque dur externe pour la sauvegarde !" >&3
else zenity --notification --window-icon="$SYS_REP/.icons/info.png" --text="Disque USB détecté ! Cliquer pour commencer la sauvegarde"
if [ $? -eq "0" ]; then
Ask_LAUNCH
else Detect_USBHDD
fi
fi
}
## demande a l'utilisateur confirmation de lancement de la sauvegarde
function Ask_LAUNCH
{
zenity --question --text="Voulez-vous commencer la sauvegarde ?"
if [ $? -eq "1" ]; then
echo "message:Sauvegarde annulée." >&3
Detect_USBHDD
else Launch_BACKUP
fi
}
## Lancement de la sauvegarde
function Launch_BACKUP
{
rsync --verbose --progress --archive $HOME_SRC_REP $DEST_REP |
awk -f $SYS_REP/.rsync.awk |
zenity --progress --width=400 --title "Sauvegarde en cours ..." --text="Scan en cours..." --percentage=0
###
# Ici, quelque soit la methode utilisé, lorsque je catch le signal de sortie de zenity, le processus rsync ne se ferme pas en meme temps, en tant que processus parent de zenity c comprehensible, mais comment faire ?
###
Finish="1"
}
Detect_USBHDD
## Prévient l'utilisateur de la fin de la synchronisation
if [ $Finish -eq "1" ]; then
zenity --info \
--window-icon="$SYS_REP/.icons/info.png" \
--text="Sauvegarde USB terminée avec succès !"
if [ $? -eq "1" ]; then
Detect_USBHDD
fi
else zenity --info \
--window-icon="$SYS_REP/.icons/warning.png" \
--text="Sauvegarde USB inachevée ! Une erreur inconnue s'est produite."
if [ $? -eq "1" ]; then
Detect_USBHDD
fi
exit 0
|
|
mardi 19 janvier 2010 à 14:39:23 |
Re : Zénity, rsync, script bash de sauvegarde de répertoires sur disque usb

stooff
|
Ayant progressé un peu sur ce script je le reposte. Malheureusemnt je n'ai toujours pas trouvé de solution a mon probleme initial, quelques pistes ont été exploitées mais sans succès.
La fenetre zenity de copie avec barre de progression étant initialisée en processus fils de rsync, il est donc normal qu'en cas d'annulation via le bouton annuler de cette meme fenetre cela ne feme pas rsync en tant que processus parent. awk serait certainement la solution a ce probleme mais pfffff je jette l'eponge.
J'ai vu pas mal d'autre scripts specifiques a la fermeture des processus parents en cas de kill du ou des processus fils mais sans succès d'intégration.
Merci de votre aide.
rsync_usb_disk.sh (gestion start stop rajouter au script) :
Code :
#!/bin/bash
## initialisation des variables de répertoire
HOME_SRC_REP=/home/$USER
HOME_DEST_REP=/media/NTFSDATA/.backup/$USER
DEST_REP=/media/NTFSDATA/.backup/
SYS_REP=/media/NTFSDATA/.backup
EXCLUDE_FILE=$SYS_REP/.$USER.exclusion
PARTAGES_REP=$SYS_REP/.partages/$USER
ICONE_REP=$HOME_SRC_REP/.rsync_usb_disk/icones
## fonction de detection du disque USB via la presence du repertoire DEST_REP
function Detect_USBHDD
{
## Boucle de test du disque dur
if ! test -e $DEST_REP; then
echo "message:Veuillez brancher votre disque dur externe pour la sauvegarde !" >&3
fi
while ! test -e $DEST_REP; do
wait
done
if test -e $DEST_REP; then
echo "message:Disque USB détecté." >&3
zenity --notification --window-icon="$ICONE_REP/info.png" --text="Cliquer pour commencer la sauvegarde"
if [ $? -eq "0" ]; then
Ask_LAUNCH
else Detect_USBHDD
fi
fi
}
## demande a l'utilisateur confirmation de lancement de la sauvegarde
function Ask_LAUNCH
{
zenity --question --text="Voulez-vous commencer la sauvegarde ?"
if [ $? -eq "1" ]; then
echo "message:Sauvegarde annulée." >&3
Detect_USBHDD
else Launch_BACKUP
fi
}
## Lancement de la sauvegarde
function Launch_BACKUP
{
echo "rsync --verbose --progress --archive --exclude-from=$EXCLUDE_FILE $HOME_SRC_REP $DEST_REP"
rsync --verbose --progress --archive --exclude-from=$EXCLUDE_FILE \
--delete-before --delete-excluded --ignore-errors \
$HOME_SRC_REP $DEST_REP |
awk -f $SYS_REP/.rsync.awk |
zenity --progress --width=400 --title "Sauvegarde en cours ..." --text="Scan en cours..." --percentage=0
###
# Ici, quelque soit la methode utilisé, lorsque je catch le signal de sortie de zenity, le processus rsync ne se ferme pas en meme temps, en tant que processus parent de zenity c comprehensible, mais comment faire ?
###
Finish="0"
}
## Tuer les processus
function Kill_PROC
{
zenity_pids=$(ps -A | grep zenity | awk '{print $1}')
while [ "$zenity_pids" != "" ]; do
ps -A | grep zenity | awk '{print $1}' | xargs kill -9 &
rsync_pids=$(ps -A | grep rsync | awk '{print $1}')
if [ "$rsync_pids" != "" ]; then
ps -A | grep rsync | awk '{print $1}' | xargs kill -9 &
fi
done
}
case "$1" in
'start')
pids=$(ps -A | grep zenity | awk '{print $1}')
if [ "$pids" == "" ]; then
Finish="0"
#Test de REP_EXCLUS sinon creation
if ! test -e $EXCLUDE_FILE; then
touch $EXCLUDE_FILE
fi
# Test de PARTAGES_REP sinon creation
if ! test -e $PARTAGES_REP; then
touch $PARTAGES_REP
else cp $PARTAGES_REP/* /var/lib/samba/usershare
fi
# Lancement de l'icone globale en barre des taches
exec 3> >(zenity --notification --window-icon="$ICONE_REP/loaded.png" --listen --text="Sauvegarde USB via rsync et zenity.")
if [ $? -eq "1" ]; then
zenity --question --text="Voulez-vous vraiment fermer le programme ?"
if [ $? -eq "1" ]; then
rsync_usb_disk.sh stop
exit 0
fi
fi
Detect_USBHDD
## Prévient l'utilisateur de la fin de la synchronisation
if [ $Finish -eq "1" ]; then
zenity --info \
--window-icon="$ICONE_REP/info.png" \
--text="Sauvegarde USB terminée avec succès !"
if [ $? -eq "1" ]; then
Detect_USBHDD
fi
else zenity --info \
--window-icon="$ICONE_REP/warning.png" \
--auto-close --auto_kill \
--text="Sauvegarde USB inachevée ! Une erreur inconnue s'est produite."
fi
Detect_USBHDD
else
zenity --info \
--window-icon="$ICONE_REP/info.png" \
--text="Le logiciel est déjà lancé !"
fi
RETVAL=0
;;
'stop')
Kill_PROC
wait
ps -A | grep zenity | awk '{print $1}' | xargs kill -9 &
RETVAL=0
;;
esac
exit $RETVAL
fichier rsync.awk :
Code :
{
if (index($0, "to-check=") > 0)
{
split($0, pieces, "to-check=");
term = substr(pieces[2], 0, length(pieces[2])-1);
split(term, division, "/");
print (1-(division[1]/division[2]))*100"%"
}
else
{
print "#"$0;
}
fflush();
}
Fichier .$USER.exclusion :
Code :
/home/utilisateur/Musique
/home/utilisateur/Images
/home/utilisateur/telechargement
/home/utilisateur/.wine
/home/utilisateur/.VirtualBox
/home/utilisateur/.PlayOnLinux
*.bak
*.~
|
|
Cette discussion est classée dans : sauvegarde, rep, usb, zenity, rsync
Répondre à ce message
Sujets en rapport avec ce message
pb de sauvegarde avec pythonwin [ par vivelesgnous ]
bonjour je débute sous python et je n'arrive pas à sauvegarder mes travaux. j'ai télécharger pythonwin 2.3.5 ainsi que pyton 2.3.5 et je travaille sou
Parcourir sa BDR [ par skools ]
Bonjour à tousVoilà: je suis loin d'être un pro en programmation, et encore moins en manipulations diverses sur la base de registre, et pourtant, je c
Passage de parametres [ par dahrprog ]
Bonjour :) , je viens de monter un petit programme de sauvegarde automatisé , g deux fichiers Python , une pour l'interface , les bouttons , parcourir
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|