Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Questions sur les backups avec rsync

8 réponses
Avatar
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

8 réponses

Avatar
Fabien LE LEZ
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
Avatar
Philippe Naudin
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
Avatar
Fabien LE LEZ
On Thu, 17 Nov 2011 21:10:15 +0100, Philippe Naudin
<p.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.
Avatar
François Valenduc
Le 17/11/11 21:12, Fabien LE LEZ a écrit :
On Thu, 17 Nov 2011 21:10:15 +0100, Philippe Naudin
<p.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
Avatar
Benoit Izac
Bonjour,

le 17/11/2011 à 21:23, François Valenduc a écrit dans le message
<4ec56d4c$0$2247$ :

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
Avatar
François Valenduc
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
<4ec56d4c$0$2247$ :

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.
Avatar
Benoit Izac
Bonjour,

le 18/11/2011 à 20:26, François Valenduc a écrit dans le message
<4ec6b183$0$24178$ :

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
Avatar
Jean
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