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