Ordine di trasferimento file ricorsivo SCP


11

Mi chiedo se è possibile specificare un tipo di ordinamento durante il trasferimento di file con scp.

Per esempio: $ scp -r "user@host:/path/to/download/" .

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

Poiché forse questo può essere correlato a come scpfunzionano le funzioni, esiste un modo per configurare ssh sul lato sorgente (server) in modo che i file vengano trasferiti, ad esempio, in ordine crescente di nome file?

Risposte:


4

Vorrei risolvere il problema tare la trasparenza del tubo di ssh. Un esempio può essere visto sotto, il PC remoto è chiamato bar. Prima del test, ho creato tre file vuoti /tmp/fooeseguendo 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

Il -Tflag di tarfa leggere i nomi dei file da comprimere dal parametro successivo e -indica l'input standard. Ora devi solo inserire il nome dei file in esso, che può provenire ls(come nell'esempio) o findper attività più complicate. Con questa configurazione, è possibile utilizzare sortper indicare l'ordine esatto in cui i file verranno trasmessi tramite SSH (in questo caso, i -rfile ordinati in ordine alfabetico inverso). L' -vviene aggiunto solo alla finale, disimballaggio tar, in modo che l'ordine è visibile.


Woah, ottimo approccio di livello inferiore e presentazione del quadro più ampio in modo così chiaro. Grazie.
Dmitry Minkovsky,

In che modo è possibile estendere tale approccio al trasferimento dei file singolarmente anziché in un archivio? Un ciclo che scorre i risultati sortnel barcomando remoto in qualche modo lo farebbe ?
Dmitry Minkovsky,

Potrebbe, ma non vedo il problema nel trasferirlo come un archivio. Se ci pensate, non c'è molta differenza tra questo approccio e scp- entrambi inviano metadati e contenuti per ciascun file, usano semplicemente un "protocollo" diverso. Immagino che potresti ripetere i risultati, ma poi dovresti occuparti dei file con spazi bianchi nei loro nomi.
dnet,

2
@dimadima, se ti piace così tanto la risposta, forse potresti accettare la risposta .
Peter V. Mørch,

Questa risposta funziona, ma bisogna adattarla al caso in cui i file hanno spazi nei nomi.
Ruslan,

1

Si può ottenere il trasferimento di file in ordine alfabetico usando rsync:

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

Pconsente il download parziale, eimposta il protocollo SSH e rscarica in modo ricorsivo.


0

Nel caso in cui ciò aiuti qualcuno, ho fornito una soluzione semplice qui:

/programming/23067175

Sto ancora aspettando un modo più intelligente per farlo!


1
Questo è solo un link. Per una risposta completa, fornire qui la risposta e quindi fornire il collegamento come riferimento.
Kevin Panko,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.