#1 Le 07/06/2016, à 11:49
- sepia_support
Rsync pour sauvegarder sur HD externe USB seulement si monté
Voici ma commande sur crontab
00 13 * * 1-4 sudo rsync -r -t -p -o -v --progress --delete -c -l -D -z -s --stats /media/donnees /media/sigistes/BUSIGJOUR1 # JOB_ID_6
BUSIGJOUR1 est un lecteur externe USB qu'on emmène le vendredi soir et qu'on rebranche le lundi matin
Le problème c'est que si le disque externe USB BUSIGJOUR1 n'est pas monté à 13h du lundi au vendredi, le système me crée automatiquement un répertoire BUSIGJOUR1 dans /media/sigistes/ et y colle le contenu de données
Sauf que données qui renvoie à un autre disque fait 1,5TO alors que mon disque système ne fait que 108 Go... donc crachage assuré par remplissage.
Comment faire pour que Rsync ne se déclenche pas si BUSIGJOUR1 n'est pas monté ?
Ou alors c'est mon montage de BUSIGJOUR1 qui est à revoir ?
Merci de vos retours
Hors ligne
#2 Le 07/06/2016, à 13:22
- gl38
Re : Rsync pour sauvegarder sur HD externe USB seulement si monté
Quand ton disque est monté, il doit y avoir une entrée dans le dossier /media/user où user est ton nom. Cette entrée n'est pas là quand le disque n'est pas monté.
Je te suggère de faire un petit programme qui ressemble à ça
#!/bin/bash
if [ ! -e /media/user/disque]; then
exit
fi
rsync -r -t -p -o -v --progress --delete -c -l -D -z -s --stats /media/donnees /media/sigistes/BUSIGJOUR1
C'est bizarre que tu utilises (encore) /media/donnes et /media/sigistes, ton ubuntu n'est pas tout neuf ? Si tu n'as pas besoin du user, tu ne le mets pas.
Le sudo ne sert à rien : il n'y a qu'à mettre la commande dans le cron de root.
Cordialement,
Guy
Hors ligne
#3 Le 07/06/2016, à 13:34
- soshy
Re : Rsync pour sauvegarder sur HD externe USB seulement si monté
J'aurai tendance a faire comme ca...
#!/bin/bash
if grep -qs '/media/sigistes ' /proc/mounts; then
echo "Disque externe est monte, sauvegarde..."
# la commande rsync
else
echo "Disque externe non monte"
fi
/media/sigistes est a remplacer avec la bonne valeur (je me suis peut etre trompe).
Si tu fais cat /proc/mounts (avec le disque monte!) tu dois avoir tout un tas de lignes, et touver la bonne, par exemple :
/dev/sda1 /media/machin/truc ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
Et avec une telle ligne il faut mettre /media/machin/truc
Dernière modification par soshy (Le 07/06/2016, à 13:42)
Hors ligne
#4 Le 07/06/2016, à 13:46
- sepia_support
Re : Rsync pour sauvegarder sur HD externe USB seulement si monté
Salut
je fais tourner le poste sur la 14.04 LTS - j'attends l'été et un peu de dispo pour migrer sous 16.04 LTS
Mais peut-être que j'utilise une méthode de dinosaure ! en tout cas, quand je monte un disque sur une session c'est là que l'OS me le montre.
Bon je vais essayer vos petits programmes avant d'inscrire le lancement dans le cron
Je vais mettre ça dans le cron de root (et ça ne devrait pas poser de problème pour le déclenchement même si je suis sur une session utilisateur au moment où, c'est ça ?)
Merci de votre aide, je vous tiens au jus
Nico
Hors ligne
#5 Le 10/08/2016, à 09:10
- sepia_support
Re : Rsync pour sauvegarder sur HD externe USB seulement si monté
Alors je vous donne quelques nouvelles après les vacances
Après avoir farfouillé sur le forum, j'ai opté pour les lignes suivantes
#!/bin/bash
x-terminal-emulator
if [ -d /media/sigistes/BUSIGJOUR1 ] ; then
echo "busigjour1 est monté, la sauvegarde de lundi à jeudi 13 h est lancée" && sudo rsync -av --delete-after --stats /media/donnees /media/sigistes/BUSIGJOUR1
else
echo "busigjour1 n'est pas monté, la sauvegarde quotidienne est annulée"
fiexit
Mais il me reste un souci : quand je lance le script dans un terminal rsync est vraiment verbeux
Quand je le lance dans le CRON, j'ai rien qui s'affiche ; j'ai essayé d'ouvrir un terminal d'où la première ligne ; mais rien ne s'affiche dedans
Je vais ouvrir un nouveau post mais je ne mets pas en résolu celui-ci tout de suite
merci à tous
Hors ligne
#6 Le 13/08/2016, à 08:47
- Sub0
Re : Rsync pour sauvegarder sur HD externe USB seulement si monté
- rsync a une option quiet.
- pourquoi tu veux faire ouvrir un terminal à cron ? cron a un shell propre, avec ses variables d’environnement.
Tu ferais mieux de rediriger sa sortie vers un fichier (en /tmp ?) si tu veux débugger, ou un message quelconque montrant que le script est bien passé.
Il est aussi possible d’indiquer un fichier de log à rsync (man rsync).
Seule alternative au bépo acceptée = stylo/papier.
Hors ligne