Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/10/2019, à 20:42

cristobal78

(résolu)synchroniser plusieurs dossiers/rép. d'un coup avec rsync

Bonjour à tous

j'utilise rsync pour synchroniser mes pc entre eux mais qd je le fait je ne synchronise qu'un seul répertoire à la fois :

rsync  -av --progress --delete-after --stats  le-dossier/   $user@$ip:le-dossier

En regardant la doc de Grsync  ici : https://doc.ubuntu-fr.org/grsync
au parag 6.2 on voit qu'on peut le faire avec Grsync.

Ma question
Y at il moyen de faire qque-chose comme ça avec rsync (donc en ligne de commande) :

rsync (rep1 rep2 rep3)  et tout ça vers PC  distant (rep1 rep2 rep3)

Dernière modification par cristobal78 (Le 14/10/2019, à 16:55)


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#2 Le 12/10/2019, à 21:12

kamaris

Re : (résolu)synchroniser plusieurs dossiers/rép. d'un coup avec rsync

Est-ce qu'il s'agit vraiment de trois destinations différentes (rep1, rep2, rep3 situés à des endroits différents sur la machine distante, ou sur trois machines différentes) ou bien simplement de trois répertoires distincts situés au même niveau sur une même machine (genre /backup/rep1, /backup/rep2, /backup/rep3) ?
Dans le second cas, il suffit de faire

rsync -av --progress --delete-after --stats rep1 rep2 rep3 $user@$ip:/backup

Dans le premier cas, j'ai l'impression que c'est plus compliqué d'échapper à une boucle.

Dernière modification par kamaris (Le 12/10/2019, à 21:13)

Hors ligne

#3 Le 13/10/2019, à 00:27

cristobal78

Re : (résolu)synchroniser plusieurs dossiers/rép. d'un coup avec rsync

Salut Kamaris

il faut effectivement que je sois plus précis car je n'avais pas pensé aux 2 hypothèses que tu formules. smile

Ce que je fais actuellement :
Je dispose de 2 PC, à savoir un PC source et un pc distant (un seul)avec lequel je communique en wifi (ou en filaire)
Sur le PC source il y a un répertoire appelé "rep1"
Depuis le PC source je sais très bien envoyer "rep1" (et tout ce qu'il y a en dessous récursivement) sur le pc cible (distant ) qui contient lui aussi un répertoire nommé "rep1" ayant besoin d'etre mis à jour (synchronisé) ce que je fais avec une cde  rsync comme indiqué au post #1.

Ensuite je relance la même cde pour le rep2 puis pour le rep3 ...etc ...

Ce que je cherche à faire :
Depuis le PC source je voudrais envoyer rep1, rep2, ... rep99 sur le PC cible qui contient des rep de même nom rep1, rep2, ...rep99 à l'aide d'une seule commande rsync ce qui me ferais gagner bcp de temps  cool


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#4 Le 13/10/2019, à 01:55

kamaris

Re : (résolu)synchroniser plusieurs dossiers/rép. d'un coup avec rsync

Ok, donc un seul pc distant, mais quelle est plus précisément l'architecture du système de fichiers cible ?
Est-ce qu'on est dans la cas que je décrivais en #2, à savoir tous les rep1, rep2, etc. au même niveau quelque part, de sorte qu'il suffise d'indiquer à rsync cet endroit pour la copie (endroit qui était /backup dans mon exemple en #2) ?
Ou bien est-ce qu'on a affaire à un truc plus accidenté, du genre /media/user/rep1, /mnt/rep2, /home/user/rep3, etc. ?

Dans le premier cas, tu peux tout faire avec la commande rsync donnée en #2, en remplaçant /backup par l'endroit où se trouvent tous les rep1, rep2, etc.
Dans le second cas, le plus simple me semble être une boucle sur les répertoires source.
Tu commences par préparer deux tableaux :
- un avec les chemins complets des répertoires source, c'est-à-dire des entrées de la forme /chemin-vers-rep-source/rep-source
- un avec les chemins des répertoires cible, sans les noms de répertoires : /chemin-vers-rep-cible
Puis tu boucles sur les indices de tableaux :

for i in "${!reps_source[@]}"; do
  rsync -av --progress --delete-after --stats "${reps_source[$i]}" "$user@$ip:${reps_cible[$i]}"
done

Hors ligne

#5 Le 14/10/2019, à 10:54

cristobal78

Re : (résolu)synchroniser plusieurs dossiers/rép. d'un coup avec rsync

bjr Kamaris

merci de ces précisions et en m'inspirant de tes post j'ai mis ceci dans un script  :

listerep="rep1 rep2 rep3"     # ma liste des dossiers à synchroniser
for rep in $listerep
do 
     echo "Synchro de << $rep >> vers PC distant en filaire"
     echo "----------------------------------------------------------------" 
     rsync -av --progress --delete-after --stats /home/MOI/$rep/ MOI@10.0.0.12:/home/MOI/$rep/
done

Le seul truc un peu casse pied c'est qu' à chaque répertoire  la cde rsync réclame le mot de passe afin d'autoriser l'écriture sur le PC distant, donc ici 3 fois. Pas bien grave.
Le script marche comme je voulais, donc re-merci à Kamarissmile

Allez encore une petite pour la route  : wink
Existe il une astuce pour n'avoir à saisir qu'une seule fois le mot de passe ?

Dernière modification par cristobal78 (Le 14/10/2019, à 10:56)


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#6 Le 14/10/2019, à 12:32

kamaris

Re : (résolu)synchroniser plusieurs dossiers/rép. d'un coup avec rsync

Tu es dans le cas simple que je décrivais plus haut, où /backup est simplement à remplacer par /home/MOI.
Tu n'as donc pas besoin de boucler :

rsync -av --progress --delete-after --stats /home/MOI/rep{1,2,3} MOI@10.0.0.12:/home/MOI

ou bien, si tes noms de répertoires ne sont pas réellement rep1, rep2, rep3, je t'invite à utiliser un tableau (surtout si ces noms peuvent contenir des espaces ou autres caractères interprétables) :

reps=('/home/MOI/premier nom de répertoire' '/home/MOI/deuxième nom de répertoire' '/home/MOI/troisième nom de répertoire')
rsync -av --progress --delete-after --stats "${reps[@]}" MOI@10.0.0.12:/home/MOI

Sinon, en ce qui concerne le mot de passe, je ne fais pas du rsync distant tous les jours, mais il me semble qu'il utilise ssh par défaut, et que c'est donc plutôt une question de configuration de ssh.
La bonne manière de faire pour ne pas avoir à saisir de mot de passe est d'utiliser un couple de clefs publique / privée, mais si tu as des problèmes avec ça, il faudrait que tu ouvres un nouveau sujet.

Hors ligne

#7 Le 14/10/2019, à 12:43

Christophe C

Re : (résolu)synchroniser plusieurs dossiers/rép. d'un coup avec rsync

je rappelle que grsync a une fonction pour montrer le code rsync.

Tu peux donc créer ton groupe de synchros sous grsync, puis en demander le code.
C'est, de ce point de vue, un bon outil pédagogique.


BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».

Hors ligne

#8 Le 14/10/2019, à 16:54

cristobal78

Re : (résolu)synchroniser plusieurs dossiers/rép. d'un coup avec rsync

Ok et merci à tous les 2. smile

Je vais aussi regarder grsync pour l'aspect pédago comme le dit Christophe C.
En attendant je passe en résolu.

Dernière modification par cristobal78 (Le 14/10/2019, à 19:23)


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne