Blocage de rsync

Bonjours à tous,

La commande suivante:

time sudo rsync -auHAXi --stats --exclude-from=/media/eric/easystore_photos/excludeP.txt /home/work/work/photos/ /media/eric/easystore_photos/photos/

se fige avec pour avant-derniers messages:

« /media/eric/easystore_photos/photos/.19:17:46.cn7lUg » failed: Invalid argument (22)

et, effectivement ce fichier (sur la source) a un nom peu compatible (ici fichier vide avec des «:», le précédent nommé « :- »)

La commande a donc passé le premier fichier, émis son message d’erreur, puis a tenté le 2e fichier. Et la, la commande se fige.

Bien entendu en effaçant ces 2 fichiers problématiques, la commande relancé après un Ctrl-c fonctionne de nouveau jusqu’à un blocage suivant, cette fois sans message, juste une attente sans fin de toute une nuit.

En l’occurence, il s’agit ici d’un petit fichier txt de 61 octets, quelques mots, sans problèmes.

Il reste plus de 500Go libre sur la partition monté en /media/eric/easystore_photos

Aucun message dans /var/log, sauf la simple copie de la commande dans /var/log/auth.log

EDIT
avec l’option « --dry-run », pas de blocage:

Number of files: 117.453 (reg: 110.018, dir: 5.899, link: 1.536)
Number of created files: 89 (reg: 87, dir: 2)
Number of deleted files: 0
Number of regular files transferred: 46
Total file size: 696.432.864.718 bytes
Total transferred file size: 469.082.608 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 393.131
File list generation time: 0,010 seconds
File list transfer time: 0,000 seconds
Total bytes sent: 3.890.660
Total bytes received: 369.826

sent 3.890.660 bytes  received 369.826 bytes  315.591,56 bytes/sec
total size is 696.432.864.718  speedup is 163.463,24 (DRY RUN)

Avec l’option --stat et --progress ça donne quoi ?

Le blocage à lieu sur le fameux fichier de 61 octets ?

Il y a pas de socket ou de lien symbolique circulaire des fois que sur la source ?

Tu peux aussi transmettre le résultat d’un strace lorsque la commande semble bloquée avec le stat et le progress :

 strace -p PID_DU_PROCESS

1- Avec --stats et --progress le problème persiste, identique sur le même fichier.

2- « Il y a pas de socket ou de lien symbolique circulaire des fois que sur la source ? »
le fichier .txt n’a aucun lien

3- strace reste bloqué à ce niveau, mais il y a 4 instances de rsync:

root     3600606  0.0  0.0  10144  4884 pts/0    S+   18:48   0:00 sudo rsync -auHAXi --stats --progress --exclude-from=/media/eric/easystore_photos/excludeP.txt /home/work/work/photos/ /media/eric/easystore_photos/photos/
root     3600607  0.1  0.0  21176 15084 pts/0    S+   18:48   0:00 rsync -auHAXi --stats --progress --exclude-from=/media/eric/easystore_photos/excludeP.txt /home/work/work/photos/ /media/eric/easystore_photos/photos/
root     3600608  0.8  0.0 1044816 33276 pts/0   S+   18:48   0:05 rsync -auHAXi --stats --progress --exclude-from=/media/eric/easystore_photos/excludeP.txt /home/work/work/photos/ /media/eric/easystore_photos/photos/
root     3600609  0.0  0.0 1042036 28360 pts/0   S+   18:48   0:00 rsync -auHAXi --stats --progress --exclude-from=/media/eric/easystore_photos/excludeP.txt /home/work/work/photos/ /media/eric/easystore_photos/photos/

La Première:

 ~#strace -p 3600606
strace: Process 3600606 attached
ppoll([{fd=-1}, {fd=3, events=POLLIN}], 2, NULL, NULL, 8

La 4eme:

#strace -p 3600609
strace: Process 3600609 attached
pselect6(1, [0], [], [0], {tv_sec=6, tv_nsec=579056947}, NULL) = 0 (Timeout)
pselect6(1, [0], [], [0], {tv_sec=60, tv_nsec=0}, NULL) = 0 (Timeout)
pselect6(1, [0], [], [0], {tv_sec=60, tv_nsec=0}, NULL

merci

Le process père attends un évènement (voir avec le quatrième process) :

Là typiquement je dirais qu’il est possible qu’il attends une confirmation ou autre pour overwrite

pselect6(1, [0], [], [0], {tv_sec=6, tv_nsec=579056947}, NULL) = 0 (Timeout)

Mais pour moi c’est un mauvais retour du stdin dans ton utilisation qui pose le souci.

Juste pour tester cette commande :

time sudo rsync -aHAXiv --inplace --ignore-times \
  --partial --append-verify --stats --progress \
  --timeout=60 --contimeout=60 \
  --exclude-from=/media/eric/easystore_photos/excludeP.txt \
  /home/work/work/photos/ \
  /media/eric/easystore_photos/photos/

Le timeout est là au cas où le support amovible passe en veille, le reste est compréhensible à mon avis.

Merci Clochette,

The --contimeout option may only be used when connecting to an rsync daemon.
rsync error: syntax or usage error (code 1) at main.c(1565) [sender=3.2.7]

je n’utilise pas le daemon rsync, juste la ligne de commande.

Avec –timeout=60, le comportement reste identique.

Par ailleurs, avec –dry-run, la commande se termine normalement, elle affiche le résumé statistique et rend la main, après avoir affiché le même fichier ( Souris/timing.txt) que lors du blocage, qui semble donc affecter seulement l’affichage de –stats

$time sudo rsync -auHAXi --dry-run --stats --progress --timeout=60 --exclude-from=/media/eric/easystore_photos/excludeP.txt "/home/work/work/photos/" "/media/eric/easystore_photos/photos/"

...

.f...p..... videos/Souris/Souris_0462.txt
.f...p..... videos/Souris/Timing_Souris_0462.pdf
.f...p..... videos/Souris/timing.txt

Number of files: 117.453 (reg: 110.018, dir: 5.899, link: 1.536)
Number of created files: 87 (reg: 85, dir: 2)
Number of deleted files: 0
Number of regular files transferred: 45
Total file size: 696.432.864.718 bytes
Total transferred file size: 469.007.359 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 393.131
File list generation time: 0,010 seconds
File list transfer time: 0,000 seconds
Total bytes sent: 3.890.620
Total bytes received: 369.786

sent 3.890.620 bytes  received 369.786 bytes  315.585,63 bytes/sec
total size is 696.432.864.718  speedup is 163.466,31 (DRY RUN)

Autre info:
La commande avec --stats suivie de wc, donne 107076 lignes

$sudo rsync -auHAXi --dry-run --exclude-from=/media/eric/easystore_photos/excludeP.txt "/home/work/work/photos/"  "/media/eric/easystore_photos/photos/" | wc
 107076  215735 6841629

alors que rsync avec * --stats* en donne plus (117.453 fichiers)

L’utilisation de sudo est obligatoire ? ce ne peux pas être une cron ou un script de ton utilisateur ?

As-tu personnaliser les locale de ton poste poste installation ? il y a peut-être un accent ou un caractère mal géré par les local utiliser par ton sudo rsync …

Pour tester essai en forçant (je te laisse mettre le restant de la commande):

LC_ALL=C sudo rsync ...