Ordre de transfert de fichier récursif SCP


11

Vous vous demandez s'il est possible de spécifier un ordre de tri lors du transfert de fichiers avec scp.

Par exemple: $ scp -r "user@host:/path/to/download/" .

[... files download in a seemingly random order ...]

Étant donné que cela peut être lié au scpfonctionnement, existe-t-il un moyen de configurer ssh côté source (serveur) afin que les fichiers soient transférés, par exemple, dans l'ordre croissant des noms de fichiers?

Réponses:


4

Je devrais résoudre le problème taret la transparence des tuyaux ssh. Un exemple peut être vu ci-dessous, le PC distant est nommé bar. Avant le test, j'ai créé trois fichiers vides en /tmp/fooexécutant ssh bar 'mkdir /tmp/foo ; touch /tmp/foo/{a,b,c}'.

$ ssh bar 'cd /tmp/foo ; ls | sort -r | tar -cT -' | tar -xv
c
b
a
$ ls -l a b c
-rw-r--r-- 1 dnet dnet 0 nov   29 17:07 a
-rw-r--r-- 1 dnet dnet 0 nov   29 17:07 b
-rw-r--r-- 1 dnet dnet 0 nov   29 17:07 c

Le -Tdrapeau de tarfait lire les noms de fichiers à emballer à partir du paramètre suivant et -signifie l'entrée standard. Il ne vous reste plus qu'à y rediriger le nom des fichiers, qui peuvent provenir ls(comme dans l'exemple) ou findpour des tâches plus délicates. Avec cette configuration, vous pouvez utiliser sortpour indiquer l'ordre exact dans lequel les fichiers seront transmis via SSH (dans ce cas, les -rfichiers triés dans l'ordre alphabétique inverse). Le -vn'est ajouté qu'au final, déballage tar, pour que la commande soit visible.


Woah, une excellente approche de niveau inférieur et présentant l'image plus large si clairement. Je vous remercie.
Dmitry Minkovsky

Comment une telle approche pourrait-elle être étendue pour transférer des fichiers individuellement plutôt que dans une archive? Est-ce qu'une boucle itérant sur les résultats de sortla barcommande à distance accomplirait cela en quelque sorte?
Dmitry Minkovsky

C'est possible, mais je ne vois pas le problème avec le transfert comme une archive. Si vous y réfléchissez, il n'y a pas beaucoup de différence entre cette approche et scp- les deux envoient des métadonnées et du contenu pour chaque fichier, ils utilisent simplement un "protocole" différent. Je suppose que vous pouvez parcourir les résultats, mais vous devriez alors vous occuper des fichiers avec des espaces dans leurs noms.
dnet

2
@dimadima, si vous aimez tellement la réponse, vous pourriez peut-être accepter la réponse .
Peter V. Mørch

Cette réponse fonctionne, mais il faut l'adapter au cas où les fichiers ont des espaces dans les noms.
Ruslan

1

On peut réaliser le transfert de fichiers par ordre alphabétique en utilisant rsync:

rsync -P -e ssh -r user@remote_host:/some_path local_path

Ppermet le téléchargement partiel, edéfinit le protocole SSH et rtélécharge récursivement.


0

Dans le cas où cela aiderait quelqu'un, j'ai fourni une solution simple ici:

/programming/23067175

J'attends toujours une façon plus intelligente de le faire!


1
Ce n'est qu'un lien. Pour une réponse complète, indiquez la réponse ici, puis indiquez le lien de référence.
Kevin Panko
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.