#1 Le 22/01/2011, à 11:06
- jrev
script de backup (résolu)
Bonjour,
J'utilise le script suivant tous les jours pour sauvegarder mes documents sur une clé USB :
#!/bin/bash
SOURCE_DIRS=/home/jean/Documents/
TARGET_DIR=/media/DOCUMENTS/
# monter le repertoire DOCUMENTS
mount /media/DOCUMENTS
rsync -av --del --stats $SOURCE_DIRS "$TARGET_DIR"
#démonter /media/DOCUMENTS
umount /media/DOCUMENTS
echo "Backup Terminé"
il faudrait que le script vérifie que le dossier /media/DOCUMENTS est bien démonté avant de nous dire "backup terminé"
Il se trouve en effet que, et ceci depuis très longtemps, parfois le dossier "DOCUMENTS" n'est pas démonté.
Ce qui fait que la mise à jour de mes documents se fait dans ce dossier non démonté et non pas dans la clé.
Pouvez-vous m'indiquer comment compléter mon script ?
Merci au geek qui passera par ici
Dernière modification par jrev (Le 26/01/2011, à 10:13)
Mal nommer les choses, c'est ajouter au malheur du monde
Hors ligne
#2 Le 22/01/2011, à 11:09
- FRUiT
Re : script de backup (résolu)
umount /media/DOCUMENTS
while [ "$(mount | grep "/media/DOCUMENTS")" ]; do sleep 1; done
echo "Backup terminé"
(pas testé j'avoue mais ça devrait le faire)
Dernière modification par FRUiT (Le 22/01/2011, à 11:12)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#3 Le 22/01/2011, à 11:10
- Levi59
Re : script de backup (résolu)
Je suis pas sûr d'avoir saisi la fin de ton message, (Document démonté à la fin de la copie sinon copie se fait dans le dossier de montage...)
Si ta clé est en extX, alors tu dois avoir un dossier Lost&Found à sa racine. Il te suffit de vérifier sa présence avant la copie. C'est une première idée.
Hors ligne
#4 Le 22/01/2011, à 11:25
- ehmicky
Re : script de backup (résolu)
Salut,
Dans la même idée :
if grep -q "$TARGET_DIR" /etc/mtab
then
echo "Backup terminé, mais $TARGET_DIR n'est pas démonté"
else
echo "Backup terminé"
fi
Sinon, umount échoue parfois parce que l'un de tes terminaux se trouve dans l'un des sous-répertoires du répertoire monté, ou que tu utilises un fichier de ce dernier.
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#5 Le 22/01/2011, à 20:28
- jrev
Re : script de backup (résolu)
Merci pour les réponses, je teste ça demain matin
Mal nommer les choses, c'est ajouter au malheur du monde
Hors ligne
#6 Le 22/01/2011, à 20:44
- Compte supprimé
Re : script de backup (résolu)
Ce qui fait que la mise à jour de mes documents se fait dans ce dossier non démonté et non pas dans la clé.
Est-ce que par hasard la cause ne serait pas plutôt : "/media/Documents ne se monte pas" ?
#7 Le 23/01/2011, à 08:57
- jrev
Re : script de backup (résolu)
Quand la faute est avérée, j'ai deux dossiers DOCUMENTS dans le dossier /media l'un que je peux démonter et l'autre pas car il a perdu sa liaison avec la clé.
Celui que je peux démonter n'est pas à jour, l'autre Oui, mais il n'est pas sur la clé
Quand il y a un dossier DOCUMENTS dans /media à la fin du script, si je tape
#umount DOCUMENTS
J'ai la réponse DOCUMENTS n'est pas monté
Si la clé n'est pas montée au départ du script , je vois défiler à l'écran tout le contenu de mon dossier Documents
Dernière modification par jrev (Le 23/01/2011, à 10:47)
Mal nommer les choses, c'est ajouter au malheur du monde
Hors ligne
#8 Le 23/01/2011, à 09:00
- Compte supprimé
Re : script de backup (résolu)
mount /media/DOCUMENTS
C'est un extrait du script ou tu montes ta clé avec cette ligne ?
ta clé est-elle déclarée dans fstab ?
Dernière modification par Compte supprimé (Le 23/01/2011, à 09:12)
#9 Le 23/01/2011, à 09:08
- Watael
Re : script de backup (résolu)
mountpoint est un utilitaire bien pratique.
point=/media/DOCUMENTS
if mountpoint -q "$point"; then echo "$point monté"; else echo "$point démonté"; fi
Dernière modification par Watael (Le 23/01/2011, à 09:08)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#10 Le 23/01/2011, à 10:18
- jrev
Re : script de backup (résolu)
mountpoint est un utilitaire bien pratique.
point=/media/DOCUMENTS if mountpoint -q "$point"; then echo "$point monté"; else echo "$point démonté"; fi
Ça me paraît tout à fait d'actualité
Voilà mon script transformé :
#!/bin/bash
SOURCE_DIRS=/home/jean/Documents/
TARGET_DIR=/media/DOCUMENTS/
point=/media/DOCUMENTS
rsync -av --del --stats $SOURCE_DIRS "$TARGET_DIR"
#démonter /media/DOCUMENTS
umount /media/DOCUMENTS
umount /media/DOCUMENTS
if mountpoint -q "$point"; then echo "$point monté"; else echo "$point démonté"; fi
echo "Backup Terminé"
Et ça marche, Merci Watael
Dernière modification par jrev (Le 23/01/2011, à 10:48)
Mal nommer les choses, c'est ajouter au malheur du monde
Hors ligne
#11 Le 23/01/2011, à 10:28
- jrev
Re : script de backup (résolu)
mount /media/DOCUMENTS
C'est un extrait du script ou tu montes ta clé avec cette ligne ?
ta clé est-elle déclarée dans fstab ?
Regarde mon premier post.
Jamais été voir dans fstab. Quel intérêt ?
Dernière modification par jrev (Le 23/01/2011, à 10:30)
Mal nommer les choses, c'est ajouter au malheur du monde
Hors ligne
#12 Le 23/01/2011, à 10:48
- Compte supprimé
Re : script de backup (résolu)
Et bien, d'après la doc, cette syntaxe ne monte que ce qui est défini dans fstab.
Sinon, il me semble qu'il faut utiliser mount /dev/sdx /mnt/machin
#13 Le 23/01/2011, à 10:50
- Compte anonymisé
Re : script de backup (résolu)
Salut
Et pourquoi ne testes-tu pas le code retour de la commande mount/umount --> si ok 0 sinon # de 0.
En shell la variable $? donne le retour de la dernière commande passée.
@+
#14 Le 23/01/2011, à 10:55
- jrev
Re : script de backup (résolu)
Salut
Et pourquoi ne testes-tu pas le code retour de la commande mount/umount --> si ok 0 sinon # de 0.
En shell la variable $? donne le retour de la dernière commande passée.@+
Merci mais comment intégrer ce test dans mon script ? ?
Je peux aussi intégrer la commande
cat /media/DOCUMENTS
pour voir si le /media est vide
En fait la commande de montage est inutile car la clé se monte automatiquement à l'en-fichage sur Ubuntu
Le problème est bien sur le démontage et la suggestion de Watael paraît fonctionner. just wait & see...
Dernière modification par jrev (Le 23/01/2011, à 11:23)
Mal nommer les choses, c'est ajouter au malheur du monde
Hors ligne
#15 Le 23/01/2011, à 11:05
- jrev
Re : script de backup (résolu)
Et bien, d'après la doc, cette syntaxe ne monte que ce qui est défini dans fstab.
Sinon, il me semble qu'il faut utiliser mount /dev/sdx /mnt/machin
les clés USB se montent toutes automatiquement et je ne connais pas le détail de cette opération.
C'est un point à creuser mais il n'y a guère de doc la-dessus à ma connaissance
Mal nommer les choses, c'est ajouter au malheur du monde
Hors ligne
#16 Le 23/01/2011, à 11:19
- Compte supprimé
Re : script de backup (résolu)
Tu peux faire le test suivant :
Demander à rsync de faire une sauvegarde dans un répertoire non monté : il te le créera, et tu sauvegarderas dans /.
Donc si la clé se monte automatiquement, alors je n'ai rien dit. Désolé.
Mais si elle ne se monte pas, c'est ce qui t'arrive, et le problème ne vient pas de umount mais de mount.
Dernière modification par Compte supprimé (Le 23/01/2011, à 11:20)
#17 Le 23/01/2011, à 11:26
- jrev
Re : script de backup (résolu)
Tu peux faire le test suivant :
Demander à rsync de faire une sauvegarde dans un répertoire non monté : il te le créera, et tu sauvegarderas dans /.Donc si la clé se monte automatiquement, alors je n'ai rien dit. Désolé.
Mais si elle ne se monte pas, c'est ce qui t'arrive, et le problème ne vient pas de umount mais de mount.
Déjà fait, voir post #7
Dernière modification par jrev (Le 23/01/2011, à 11:27)
Mal nommer les choses, c'est ajouter au malheur du monde
Hors ligne
#18 Le 23/01/2011, à 11:51
- Compte anonymisé
Re : script de backup (résolu)
jeanjd63 a écrit :Salut
Et pourquoi ne testes-tu pas le code retour de la commande mount/umount --> si ok 0 sinon # de 0.
En shell la variable $? donne le retour de la dernière commande passée.@+
Merci mais comment intégrer ce test dans mon script ? ?
Je peux aussi intégrer la commande
cat /media/DOCUMENTS
pour voir si le /media est vide
En fait la commande de montage est inutile car la clé se monte automatiquement à l'en-fichage sur Ubuntu
Le problème est bien sur le démontage et la suggestion de Watael paraît fonctionner. just wait & see...
Et oui le montage se fait automatiquement, mais si pour une raison ou un autre il ne se fait pas, tu vas bien sûr aller écrire dans /media/DOCUMENTS mais pas sur la clé. Enfin c'est toi qui vois
Quand à moi, je testerai la présence d'un fichier "témoin" sur la clé afin d'être sûr.
Ensuite pour le test, je ne suis pas un pro du shell mais tu dois pouvoir écrire qq chose dans le style :
#démonter /media/DOCUMENTS
umount /media/DOCUMENTSif [ $? = 0 ]
then echo "Backup Terminé"
else echo "Problème démontage"
fi
#19 Le 24/01/2011, à 08:27
- jrev
Re : script de backup (résolu)
Bon,
J'ai choisi d'ajouter la commande
cat /media/Documents
pour avoir ou non la réponse
cat: /media/Documents: Aucun fichier ou dossier de ce type
ce qui laisse le script à la portée du débutant
Dernière modification par jrev (Le 24/01/2011, à 08:33)
Mal nommer les choses, c'est ajouter au malheur du monde
Hors ligne
#20 Le 24/01/2011, à 09:15
- Compte anonymisé
Re : script de backup (résolu)
Salut
Attention, ta commande : cat /media/Documents me parait assez bizarre. En effet Documents est un répertoire et sera toujours présent, que ta clé soit ou non montée.
Il faudrait créer sur la clé un fichier caché de type .flag et vérifier sa présence ou non présence pour savoir si la clé est montée ou non.
@+
#21 Le 24/01/2011, à 09:53
- cep
Re : script de backup (résolu)
Bon,
J'ai choisi d'ajouter la commandecat /media/Documents
pour avoir ou non la réponse
cat: /media/Documents: Aucun fichier ou dossier de ce type
ce qui laisse le script à la portée du débutant
Salut Jean,
Tu utilises la commande mountpoint en final, tu peux en faire de même au début.
Ou, plus simple, une condition pour lancer ton rsync du style :
if grep -q "/media/Documents/" /proc/mounts; then rsync ta_commande_complète ; fi
Tu peux même, encore plus simple, démonter au cas où et remonter, ou compléter par des "case", mais alors ce sera plus complexe.
Bonne continuation.
cep
Hors ligne
#22 Le 24/01/2011, à 22:53
- TraGiKomiK
Re : script de backup (résolu)
Pas cool le doublon j'ai meme pas eu le temps de poser ma question a FRUiT du coup
Reste plus qu'a aller voir sur l'autre message le script que j'ai posté
Merci de mettre [RESOLU] dans le titre de votre post une fois le probleme reglé!
GNU/Linux -> \o/
Hors ligne
#23 Le 24/01/2011, à 23:08
- FRUiT
Re : script de backup (résolu)
Ben pose la ici du coup...
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#24 Le 24/01/2011, à 23:30
- TraGiKomiK
Re : script de backup (résolu)
@FRUiT: je t'ai envoyé un mail ne sachant pas si l'on se recroiserai sur ce post
Ma question etait (a peu pres):
Pourquoi des "" dans les variables et en les appelant? Sauf si celles ci font appels a des fonctions je n'en voit pas l'interet... Il suffit de proteger les espaces grace a \ (valable dans les variables).
Si je n'ai pas compris un truc merci de m'expliquer, serait ravi d'apprendre une chose en plus
Merci de mettre [RESOLU] dans le titre de votre post une fois le probleme reglé!
GNU/Linux -> \o/
Hors ligne
#25 Le 24/01/2011, à 23:46
- FRUiT
Re : script de backup (résolu)
@FRUiT: je t'ai envoyé un mail ne sachant pas si l'on se recroiserai sur ce post
Ma question etait (a peu pres):
Pourquoi des "" dans les variables et en les appelant? Sauf si celles ci font appels a des fonctions je n'en voit pas l'interet... Il suffit de proteger les espaces grace a \ (valable dans les variables).
Si je n'ai pas compris un truc merci de m'expliquer, serait ravi d'apprendre une chose en plus
Et bien les guillements permettent d'éviter de s'enquiquiner à rajouter des \. Surtout que si les espaces sont nombreux on a tôt fait d'en oublier un, de \. Après moi je trouve aussi ça bien plus lisible avec des guillemets (d'autant plus lorsque la coloration syntaxique de ton logiciel d'édition préféré met leur contenu en évidence) mais bon ça c'est personnel.
Les guillemets sont justement là pour ça alors autant les utiliser. Et puis il vaut mieux apprendre tout de suite à bien protéger le contenu de ses variables car lorsque leur contenu devient plus complexe qu'un simple nom de fichier, on ne peut pas vraiment tabler sur l'absence d'espaces, et il vaut mieux prévenir que guérir. Exemple si ta variable contient tour à tour une suite de noms de fichiers issus d'un ls, et non un seul, là tu ne sais pas protéger les espaces avec des \.
Sinon tu as raison les \ ça marche souvent.
Dernière modification par FRUiT (Le 24/01/2011, à 23:57)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne