Re: [#!/fr] Traiter la sortie de la commande rsync

Page principale
Supprimer ce message
Répondre à ce message
Auteur: Patrick Proniewski via Script_shell_fr
Date:  
À: La liste francophone des scripts shell
CC: Patrick Proniewski
Sujet: Re: [#!/fr] Traiter la sortie de la commande rsync
J'avoue que c'est étrange. D'une part je n'ai pas le même comportement de rsync (aucune ligne de sortie ne contient "is uptodate"), d'autre part le pipe n'est pas bloquant pour mon authentification ni pour le reste (j'ai bien le prompt, je tape le PIN et ça roule) :

$ rsync -azvv --dry-run /tmp/ 192.168.0.1:/tmp/ 2>&1 | grep total
Enter PIN for 'YubiKey PIV':
total: matches=0 hash_hits=0 false_alarms=0 data=0
total size is 22153152 speedup is 49670.74

Je suis en 10.15.x avec cette version de rsync :

$ rsync --version
rsync version 2.6.9 protocol version 29

Pour finir, il est possible de faire l'authentification par clé SSH, ce qui permet de ne pas avoir à faire la saisie manuelle d'un mot de passe. Avantage : il est alors facile de fabriquer un script shell plus élaboré qu'une simple commande avec un |grep. Je fais des tonnes de synchro rsync depuis des lustres via des scripts shell plus ou moins élaborés, ça marche bien.

J'ai notamment utilisé un script (/Users/patpro/bin/backup_auto.sh) ressemblant à ceci :

-----------------------
#!/bin/bash
# $Id: backup_auto.sh 109 2010-05-20 08:19:46Z patpro $
#
THEROOT="/Volumes/pandore/Backups.backupdb/cassandre"
THEDIR=$(stat -f "%Y" ${THEROOT}/Latest)

ipconfig waitall

# backup vers bkp_maison
rsync -av --log-file=/tmp/passe1 \
      -e "ssh -vF /Users/patpro/.ssh/config_bkp" \
      --delete-before \
      --exclude="**/.fseventsd" \
      --exclude="**/backup_rack" \
      --exclude="**/Unreal*.app" \
      --exclude="**/com.fondantfancies.shrook2" \
      --delete-excluded \
      ${THEROOT}/${THEDIR}/cassandre/Users/patpro patbkp@bkp_maison:/backupmaison/cassandre/


rsync -av --log-file=/tmp/passe2 \
      -e "ssh -F /Users/patpro/.ssh/config_bkp" \
      --delete \
      ${THEROOT}/${THEDIR}/cassandre/Users/Shared patbkp@bkp_maison:/backupmaison/cassandre/


rsync -av --log-file=/tmp/passe3 \
      -e "ssh -F /Users/patpro/.ssh/config_bkp" \
      --delete \
      ${THEROOT}/${THEDIR}/cassandre/Applications patbkp@bkp_maison:/backupmaison/cassandre/


-----------------------


qui était lancé par un fichier LaunchDaemons (/Library/LaunchDaemons/net.patpro.backup.plist) :


-----------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>net.patpro.backup</string>
        <key>UserName</key>
        <string>patpro</string>


        <key>StandardErrorPath</key>
        <string>/tmp/net.patpro.backup.log</string>


        <key>StandardOutPath</key>
        <string>/tmp/net.patpro.backup.log</string>


        <key>EnvironmentVariables</key>
        <dict>
          <key>PATH</key>
          <string><![CDATA[/opt/local/bin:/opt/local/sbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/Users/patpro/bin:/Users/patpro/.rvm/bin]]></string>
        </dict>


        <key>WorkingDirectory</key>
        <string>/Users/patpro</string>


        <key>ProgramArguments</key>
        <array>
                <string>/Users/patpro/bin/backup_auto.sh</string>
        </array>
        <key>StartCalendarInterval</key>
        <array>
            <dict>
                <key>Weekday</key>
                <integer>1</integer>
                <key>Hour</key>
                <integer>5</integer>
                <key>Minute</key>
                <integer>30</integer>
            </dict>
            <dict>
                <key>Weekday</key>
                <integer>2</integer>
                <key>Hour</key>
                <integer>5</integer>
                <key>Minute</key>
                <integer>30</integer>
            </dict>
            <dict>
                <key>Weekday</key>
                <integer>3</integer>
                <key>Hour</key>
                <integer>5</integer>
                <key>Minute</key>
                <integer>30</integer>
            </dict>
            <dict>
                <key>Weekday</key>
                <integer>4</integer>
                <key>Hour</key>
                <integer>5</integer>
                <key>Minute</key>
                <integer>30</integer>
            </dict>
            <dict>
                <key>Weekday</key>
                <integer>5</integer>
                <key>Hour</key>
                <integer>5</integer>
                <key>Minute</key>
                <integer>30</integer>
            </dict>
            <dict>
                <key>Weekday</key>
                <integer>6</integer>
                <key>Hour</key>
                <integer>5</integer>
                <key>Minute</key>
                <integer>30</integer>
            </dict>
            <dict>
                <key>Weekday</key>
                <integer>7</integer>
                <key>Hour</key>
                <integer>5</integer>
                <key>Minute</key>
                <integer>30</integer>
            </dict>
        </array>
</dict>
</plist>


-----------------------


Bref, il y a moyen de faire des tonnes de trucs :)



> On 24 Nov 2021, at 19:19, Yves Petronin via Script_shell_fr <script_shell_fr@???> wrote:
>
>
>
> Je soupçonnais que la difficulté pouvait venir du besoin de saisir un mot de passe pour la machine distante après passage de la commande, mais en synchronisant deux dossiers de la même machine, on bloque aussi l’opération:
>
> Macbook-pro-Yves:~ yves$ rsync -azvv /Users/yves/Desktop/Test-rync/Source/ /Users/yves/Desktop/Test-rync/Target 2>&1 | grep -v 'is uptodate$’
>>
>
> Il est évidemment possible de créer un fichier intermédiaire (comme dans la plupart des exemples de l’article cité) mais je voudrait quand même comprendre le phénomène.
>
> Je viens de voir aussi qu’en éliminant la « double verbosité » de la commande rsync, (en utilisant "rsync -azv » on résout déjà une grande partie de mon problème mais bon !!!
>
>
> _______________________________________________
> archives :
> http://listes.patpro.net/list/sshfr.fr.html
> http://listes.patpro.net/mailman/listinfo/script_shell_fr


_______________________________________________
archives :
http://listes.patpro.net/list/sshfr.fr.html
http://listes.patpro.net/mailman/listinfo/script_shell_fr