[... files download in a seemingly random order ...]
scpGibt es eine Möglichkeit, ssh auf der Quellenseite (Serverseite) so zu konfigurieren, dass Dateien beispielsweise in aufsteigender Reihenfolge des Dateinamens übertragen werden, da dies möglicherweise mit der Funktionsweise zusammenhängt?
Ich würde das Problem mit tarund die Pfeifentransparenz von lösen ssh. Ein Beispiel ist unten zu sehen, der Remote-PC heißt bar. Vor dem Test habe ich drei leere Dateien /tmp/foodurch Ausführen erstellt 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
Das -TFlag von tarbewirkt, dass Dateinamen gelesen werden, die aus dem nächsten Parameter gepackt werden sollen, und -bedeutet die Standardeingabe. Jetzt müssen Sie nur noch den Namen der Dateien einfügen, die von ls(wie im Beispiel) oder findfür schwierigere Aufgaben stammen können. Mit diesem Setup können Sie sortdie genaue Reihenfolge angeben, in der die Dateien über SSH übertragen werden (in diesem Fall -rsortierte Dateien in umgekehrter alphabetischer Reihenfolge). Das -vwird nur zum endgültigen Auspacken hinzugefügt tar, damit die Reihenfolge sichtbar ist.
Woah, großartiger Ansatz auf niedrigerer Ebene, der das Gesamtbild so klar darstellt. Vielen Dank.
Dmitry Minkovsky
Wie könnte ein solcher Ansatz erweitert werden, um Dateien einzeln anstatt in einem Archiv zu übertragen? Würde eine Schleife, die über die Ergebnisse sortdes barRemote-Befehls iteriert, dies irgendwie erreichen?
Dmitry Minkovsky
Es mag sein, aber ich sehe das Problem bei der Übertragung nicht als Archiv. Wenn Sie darüber nachdenken, gibt es keinen großen Unterschied zwischen diesem Ansatz und scp- beide senden Metadaten und Inhalte für jede Datei, sie verwenden nur ein anderes "Protokoll". Ich denke, Sie könnten die Ergebnisse durchlaufen, aber dann sollten Sie sich um Dateien kümmern, deren Namen Leerzeichen enthalten.
dnet
2
@ Dimadima, wenn dir die Antwort so gut gefällt, könntest du vielleicht die Antwort akzeptieren .
Peter V. Mørch
Diese Antwort funktioniert, aber man muss sie an den Fall anpassen, in dem Dateien Leerzeichen in Namen haben.
Ruslan
1
Eine Dateiübertragung in alphabetischer Reihenfolge kann erreicht werden mit rsync:
sort
desbar
Remote-Befehls iteriert, dies irgendwie erreichen?scp
- beide senden Metadaten und Inhalte für jede Datei, sie verwenden nur ein anderes "Protokoll". Ich denke, Sie könnten die Ergebnisse durchlaufen, aber dann sollten Sie sich um Dateien kümmern, deren Namen Leerzeichen enthalten.Eine Dateiübertragung in alphabetischer Reihenfolge kann erreicht werden mit
rsync
:P
ermöglicht teilweises Herunterladen,e
legt das SSH-Protokoll fest undr
lädt rekursiv herunter.quelle
Für den Fall, dass dies jemandem hilft, habe ich hier eine einfache Lösung bereitgestellt:
/programming/23067175
Ich warte immer noch auf einen klügeren Weg!
quelle