Re: [CBLX] y a-t-il un bug dans scp ?

[ Thread Index | Date Index | More lists.tuxfamily.org/carrefourblinux Archives ]


Le 14/11/2022 à 15:08, Didier Spaier écrivait :
Bonjour,

Je n'ai pas la réponse mais tu peux envoyer les 20 fichiers en une seule ligne
de commande.
si $liste="f1 f2 f3 ... f20":
echo "$liste"|while read $i; do scp $i aldo@xxxxxxxxxxx:~ ; done

Non vraiment trop de mauvaise pratique du shell :

On ne range pas une liste dans un chaîne séparée par des espaces ; on la range dans un tableau liste=('f1' 'f2' 'f3' ... 'f20').
for src in "${liste[@]}"; do scp "$src" aldo@xxxxxxxxxxx:; done
ou simplement:
for src in 'f1' 'f2' 'f3'; do scp "$src" aldo@xxxxxxxxxxx:; done

Le chemin d’une machine distante user@xxxxxxxxxxx: pointe toujours vers le dossier home de l'utilisateur. Donc inutile de spécifier le tilde. Maintenant si tu veux désigner le dossier home d’un autre utilisateur que celui qui se connecte, il faut écrire albert@xxxxxxxxxxx:~bernard/ Le / de fin est nécessaire pour bien spécifier que la destination est un dossier et éviter comme dans ton cas que la taille considérée soit celle de l’inode du dossier qui est juste la taille allouée pour contenir les noms de fichiers du dossier et qui est visible avec la commande :
ls -ld ~

On ajoute toujours -r à read sinon ça interprète les \
On met toujours une variable shell entre guillemets pour éviter d'étendre le contenu comme un motif de recherche (globbing pattern) et découpage selon le contenu de la variable d’environnement IFS.

Une très bonne lecture :
https://mywiki.wooledge.org/BashPitfalls

Et pour revenir à scp. rsync est un remplaçant bien plus moderne qui sait gérer la compression, la reprise et les conditions de mises à jour ou synchronisations entre dossiers de et vers une machine distante, ou localement.


--
Léa Gris



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/