Bonjour, J'utilise rsync pour synchroniser un répertoire vers un serveur distant.
Coté client rsync, j'execute périodiquement un job qui ressemble à: # -- SyncData lvcreate -s -L ${SnapSize}M -n bkup vg/data mount /dev/vg/bkup /mnt touch /mnt rsync -zaSD --zc zstd --delete --numeric-ids --exclude=... \ /mnt/. rsync://target:/data/. umount /mnt lvremove -f vg/bkup Le `touch` me permet de repérer le moment de la dernière synchronisation. Coté serveur rsync (@target), je fais: # -- CpLinkData root=data cd "/path/backups/" || exit 1 test -d "$root" || exit 1 cpylink=$(date -r "$root" +"$root-%Y-%m-%d-%Hh%M") [ -d "$cpylink" ] || cp -al "$root" "$cpylink" Voilà. J'utilise ensuite un script pour effacer les backups afin de n'en conserver que les N dernier(e)s { heures, jours, semaines, mois, années }. ( ce script est un peu lourd (wc -> 238 886 6958) et pas très propre, je l'envoie en l'état à qui me le demande, mais ne le publie pas tout de suite... ) Coté serveur (@target), le meilleur moment pour executer le `cp -al', c'est au moment où une dernière synchronisation se termine. Parce que je n'ai pas trouvé le moyen de déclancher une action sur un evennement, comme la fin d'un sous-process du serveur rsync, je fais: # -- cron 1' avant le client... doLink() { ... cp -al ... ;} while IFS=$' :[]\t\r\n' read -u $jnl _{,,,,,,} pid _ cmd && ((pid)) ;do case "$cmd" in 'connect'*) read _ _ _from[pid] <<< "$cmd" ;; 'rsync to'*) read _ _ _to[pid] _ <<< "$cmd" ;; 'sent '*) [ "${_from[pid]%%.*}" = "clienthost" ] && [ "${_to[pid]%%/*}" = "data" ] && break unset _from[pid] _to[pid] ;; esac done {jnl}< <(journalctl -axu rsync -fn 0) [ "${_from[pid]%%.*}" = "clienthost" ] && [ "${_to[pid]%%/*}" = "data" ] && doLinks Je repère ansi qu'il s'agit bien d'un ``rsync TO @target'', que le from est bien le ``clienthost'', que le dossier concerné est bien ``data'' et que la synchonisation s'est terminée avec le message ``sent ...''. Le script créé un verrou afin de s'assurer qu'il ne s'execute pas 2x. Donc ma question: Avec le révolutionaire systemd et son journald, existe-t-il un moyen de traquer la fin d'un ``rsync'', avec le topo de ce qui à été synchonisé de manière plus simple/propre, en utilisant des triggers plus simples à créer? -- Félix Hauri - <fe...@f-hauri.ch> - http://www.f-hauri.ch _______________________________________________ gull mailing list gull@forum.linux-gull.ch https://forum.linux-gull.ch/mailman/listinfo/gull