Dans un script de sauvegarde, je vérifie le crc des fichiers locaux et distants pour m’assurer que le transfert s’est bien fait.
Pour cela je passe par une boucle while qui compare le crc local au crc distant de chaque fichier.
Si je fais cela sur des perif locaux, ça fonctionne (comparaison disque local et disque de sauvegarde sur USB)
Si je fais cela sur un serveur distant, c’est là que ça cafouille.
Du coup je me suis fait un petit script qui ne fait que retourner à chaque ligne le CRC du fichier distant et du fichier local.
Le script passe la première ligne sans problème, mais il ne va jamais à la seconde. Il s’arrête net et donc ne traite pas le restant.
il semblerait que la sortie de boucle soit due à l’envoie de la commande cksum sur le serveur distant par la commande ssh
j’ai beau essayer de me torturer la tête, je ne vois pas pourquoi
Et si au lieu de faire une connexion SSH par itération de ta boucle, tu créais un point de montage SSHFS temporaire ? Ensuite tu peux faire tes vérifications sur le filesystem “local”, ça serait sûrement plus fiable non ?
je pourrais oui, mais je trouve que monter un dossier distant sur un dossier local, et le démonter par la suite, c’est un peu lourd dans mon cas puisque je ne veux récupérer que le CRC et non copier des fichiers
Oui c’est à ça que je pensais.
Cela dit tu soulèves un bon point auquel je n’avais pas pensé : le poids des fichiers à transférer pour pouvoir effectuer le checksum en local vs. la lourdeur de se connecter à chaque itération de la boucle.
Pour le problème de ta boucle qui s’arrête inopinément, j’ai pas d’idée non plus : en toute logique au pire il devrait renvoyer une valeur vide dans RCRC. L’option -e de sh/bash n’est pas activée par hasard (ss64.com/bash/set.html) ?
[quote=“syam”]Oui c’est à ça que je pensais.
Pour le problème de ta boucle qui s’arrête inopinément, j’ai pas d’idée non plus : en toute logique au pire il devrait renvoyer une valeur vide dans RCRC. L’option -e de sh/bash n’est pas activée par hasard (ss64.com/bash/set.html) ?[/quote]
je n’y avais pas pensé oui… mais après test, cela ne change rien
(j’ai rajouté un “set +e” en début de script pour désactiver l’option)
rm -rf “${tmpdir}”[/code]
Pas de boucle, parallélisable facilement, une seule connexion ssh et assez simple, on peut faire mumuse et virer certaines commandes extérieures au shell ainsi que des fichiers temporaires pour le plaisir (toutes avec zsh !).