Bon je dis en fait tout dans le titre en un sens
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.
Voilà ce que le bout de code donne :
#!/bin/bash
RAPPORT="mon_test.txt"
RCRC=""
LCRC=""
echo "" > ${RAPPORT}
cat /datas/send.list | while read line
do
RCRC=""$(ssh -p22000 backup@ip_du_serveur "cksum /datas/serv_test/"${line}" | awk '{print \$1\$2}'")
LCRC=""$(cksum /datas/${line} | awk '{print $1$2}')
printf "fichier : "${line}"\n"
printf "CRC local : "${RCRC}"\n"
printf "CRC distant : "${LCRC}"\n"
done
si quelqun peut m’éclairer là dessus
edit:
voici un apperçu de ce que contient send.list
[code]test.txt
test.tgz
test.rar
test.html
[/code]
ce send.list est généré à la suite d’un rsync en mode verbose
...
rsync -avvvz --delete -e "ssh -p22000" ./ backups@ip_du_serveur:/datas/serv_test/ > /datas/rapport.log
cat /datas/rapport.log | grep "sender finished" | sed 's/sender.*finished //g' > /datas/send.list
printf "\n" >> /datas/send.list
...