Questions sur les backups avec rsync

Le
François Valenduc
Bonjour à tous,

Celà fait plusieurs jours que je me débat avec un problème
incompréhensible. J'ai écrit le script suivant pour faire un backup de
ma partition home:

#!/bin/sh

mountpoint -q /media/ext-hd

if [ $? = 0 ]; then
lvcreate -L1G -n backup -s /dev/gentoo/home

if [ $? = 0 ]; then
mount /dev/gentoo/backup /mnt/backup

if [ $? = 0 ]; then
rsync -av --delete --exclude="lost+found"
/mnt/backup/* /media/ext-hd/

umount /mnt/backup

lvremove -f gentoo/backup
fi
fi
fi


Si j'exécute ces commandes une à une dans un shell, tout se passe
correctement. Par contre, si j'exécute le script, rsync ne transfère
aucun fichier.

Quelqu'un peut t'il me dire ce qui se passe ?
Merci d'avance pour votre aide.

François Valenduc
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fabien LE LEZ
Le #23975871
On Thu, 17 Nov 2011 19:57:27 +0100, François Valenduc

mountpoint -q /media/ext-hd

if [ $? = 0 ]; then



J'ai l'impression que tu cherches à te compliquer la vie ici.
Vire tes tests, et écris
set -e
au début du script.
Accessoirement, "set -x" peut également t'être utile.

http://blog.julipedia.org/2010/01/set-e-and-set-x.html
Philippe Naudin
Le #23976051
Le jeu 17 nov 2011 19:57:27 CET, François Valenduc a écrit:

Bonjour à tous,

...
Si j'exécute ces commandes une à une dans un shell, tout se passe
correctement. Par contre, si j'exécute le script, rsync ne transfère
aucun fichier.



La page de man dont je dispose ne précise pas les codes de sortie de
lvcreate, as tu vérifié qu'il renvoie bien 0 sur un succès ?

Vérifie aussi que le PATH utilisé par ton script trouve bien les
commandes voulues. Dans le doute, mets des chemins complets.

Si ce n'est pas ça, parsème ton scripts de echo "j'en suis là..." pour
savoir où ça coince.

Ça n'a rien a voir, mais je trouve que la forme
if mountpoint -q /media/ext-hd ; then
est plus lisible que
mountpoint -q /media/ext-hd
if [ $? = 0 ]; then

Tu peux aussi combiner plusieurs commandes en un seul test :
if mountpoint -q /media/ext-hd &&
lvcreate -L1G -n backup -s /dev/gentoo/home &&
mount /dev/gentoo/backup /mnt/backup
then


--
Philippe Naudin
Fabien LE LEZ
Le #23976041
On Thu, 17 Nov 2011 21:10:15 +0100, Philippe Naudin

Si ce n'est pas ça, parsème ton scripts de echo "j'en suis là..."



Non. Utilise "set -x", c'est fait pour ça.
François Valenduc
Le #23976081
Le 17/11/11 21:12, Fabien LE LEZ a écrit :
On Thu, 17 Nov 2011 21:10:15 +0100, Philippe Naudin

Si ce n'est pas ça, parsème ton scripts de echo "j'en suis là..."



Non. Utilise "set -x", c'est fait pour ça.



Le set -x m'a en effet bien aidé. Ca m'a permis de constater que rsync
/mnt/backup/* /media/ext-hd ne traite pas les répertoire cachés (dont le
nom commence par un point). Comme entre mes essais, il n'y avait que le
cache de firefox ou les dossiers utilisés par thunderbird ou kde qui
étaient modifiés, ceux-ci n'étaient pas synchronisés. En mettant "rsync
/mnt/backup ..." à la place, çà a résolu mon problème. Ce que je ne
comprends pas, c'est que çà fonctionnait quand même directement en
tappant la commande dans un shell.
Enfin, mon problème a quand même l'air d'être résolu.

Merci pour les conseils.

François
Benoit Izac
Le #23976271
Bonjour,

le 17/11/2011 à 21:23, François Valenduc a écrit dans le message

Le set -x m'a en effet bien aidé. Ca m'a permis de constater que rsync
/mnt/backup/* /media/ext-hd ne traite pas les répertoire cachés (dont le
nom commence par un point).



Attention, ce n'est pas rsync ne voit pas le « * », c'est le shell qui
remplace « /mnt/backup/* » par « /mnt/backup/file1 /mnt/backup/file2
... /mnt/backup/fileN » avant d'appeler rsync.

Comme entre mes essais, il n'y avait que le cache de firefox ou les
dossiers utilisés par thunderbird ou kde qui étaient modifiés, ceux-ci
n'étaient pas synchronisés. En mettant "rsync /mnt/backup ..." à la
place, çà a résolu mon problème. Ce que je ne comprends pas, c'est que
çà fonctionnait quand même directement en tappant la commande dans un
shell.



Quel shell ?

% touch .a
% ls *
zsh: no matches found: *
% setopt globdots
% ls *
.a
% unsetopt globdots

--
Benoit Izac
François Valenduc
Le #23979121
Le 17/11/11 22:38, Benoit Izac a écrit :
Bonjour,

le 17/11/2011 à 21:23, François Valenduc a écrit dans le message

Le set -x m'a en effet bien aidé. Ca m'a permis de constater que rsync
/mnt/backup/* /media/ext-hd ne traite pas les répertoire cachés (dont le
nom commence par un point).



Attention, ce n'est pas rsync ne voit pas le « * », c'est le shell qui
remplace « /mnt/backup/* » par « /mnt/backup/file1 /mnt/backup/file2
... /mnt/backup/fileN » avant d'appeler rsync.

Comme entre mes essais, il n'y avait que le cache de firefox ou les
dossiers utilisés par thunderbird ou kde qui étaient modifiés, ceux-ci
n'étaient pas synchronisés. En mettant "rsync /mnt/backup ..." à la
place, çà a résolu mon problème. Ce que je ne comprends pas, c'est que
çà fonctionnait quand même directement en tappant la commande dans un
shell.



Quel shell ?

% touch .a
% ls *
zsh: no matches found: *
% setopt globdots
% ls *
.a
% unsetopt globdots



Je ne connaissais pas l'option globdots mais çà permet aussi de faire
fonctionner mon script. Donc, j'ai deux options pour résoudre mon
problème, ce qui me suffit amplement. Merci pour tous vos conseils.
Benoit Izac
Le #23979261
Bonjour,

le 18/11/2011 à 20:26, François Valenduc a écrit dans le message

Le set -x m'a en effet bien aidé. Ca m'a permis de constater que rsync
/mnt/backup/* /media/ext-hd ne traite pas les répertoire cachés (dont le
nom commence par un point).



Attention, ce n'est pas rsync ne voit pas le « * », c'est le shell qui
remplace « /mnt/backup/* » par « /mnt/backup/file1 /mnt/backup/file2
... /mnt/backup/fileN » avant d'appeler rsync.

Comme entre mes essais, il n'y avait que le cache de firefox ou les
dossiers utilisés par thunderbird ou kde qui étaient modifiés, ceux-ci
n'étaient pas synchronisés. En mettant "rsync /mnt/backup ..." à la
place, çà a résolu mon problème. Ce que je ne comprends pas, c'est que
çà fonctionnait quand même directement en tappant la commande dans un
shell.



Quel shell ?

% touch .a
% ls *
zsh: no matches found: *
% setopt globdots
% ls *
.a
% unsetopt globdots



Je ne connaissais pas l'option globdots mais çà permet aussi de faire
fonctionner mon script. Donc, j'ai deux options pour résoudre mon
problème, ce qui me suffit amplement. Merci pour tous vos conseils.



Personnellement, je m'en tiendrai à « rsync src/ dest/ ». globdots est
spécifique à zsh et, pour un script de sauvegarde, je pense qu'il vaut
mieux faire un programme portable ; ainsi on peut l'utiliser quel que
soit le shell qui fait office de /bin/sh (bash, dash, zsh, ksh).

--
Benoit Izac
Jean
Le #23987011
Le Thu, 17 Nov 2011 19:57:27 +0100, François Valenduc a écrit :

Bonjour à tous,

Celà fait plusieurs jours que je me débat avec un problème
incompréhensible. J'ai écrit le script suivant pour faire un backup de
ma partition home:

#!/bin/sh

mountpoint -q /media/ext-hd

if [ $? = 0 ]; then
lvcreate -L1G -n backup -s /dev/gentoo/home

if [ $? = 0 ]; then
mount /dev/gentoo/backup /mnt/backup

if [ $? = 0 ]; then
rsync -av --delete --exclude="lost+found"
/mnt/backup/* /media/ext-hd/

umount /mnt/backup

lvremove -f gentoo/backup
fi
fi
fi


Si j'exécute ces commandes une à une dans un shell, tout se passe
correctement. Par contre, si j'exécute le script, rsync ne transfère
aucun fichier.

Quelqu'un peut t'il me dire ce qui se passe ? Merci d'avance pour votre
aide.

François Valenduc


Bonsoir,

Dans les tâches planifiées (applications>outils système>Tâches
planifiées),avec la commande ci-dessous et en ayant paramétré date et
heure, ma sauvegarde se fait toutes les nuits à 23h (le PC tourne en
permanence). Et cela fonctionne
rsync -r -t -p -o -g -v --delete -l -D /home/jean/ /media/Fourretout/Home/

cordialement,

A+ Jean
Publicité
Poster une réponse
Anonyme