Preguntándose si es posible especificar un orden de clasificación al transferir archivos con scp.
Por ejemplo:
$ scp -r "user@host:/path/to/download/" .
[... files download in a seemingly random order ...]
Dado que quizás esto puede estar relacionado con el scpfuncionamiento, ¿hay alguna forma de configurar ssh en el lado de origen (servidor) para que los archivos se transfieran, por ejemplo, en orden ascendente de nombre de archivo?
Resolvería el problema tary la transparencia de la tubería ssh. Un ejemplo se puede ver a continuación, se nombra la PC remota bar. Antes de la prueba, creé tres archivos vacíos /tmp/fooejecutándolos 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
El -Tindicador de tarhace que lea los nombres de archivo para empacar desde el siguiente parámetro, y -significa la entrada estándar. Ahora solo necesita canalizar el nombre de los archivos, que pueden provenir ls(como en el ejemplo) o findpara tareas más complicadas. Con esta configuración, puede usar sortpara indicar el orden exacto en que los archivos se transmitirán a través de SSH (en este caso, los -rarchivos ordenados en orden alfabético inverso). El -vsolamente se añade a la final, el desembalaje tar, de manera que el orden es visible.
Woah, gran enfoque de nivel inferior y presentando la imagen más amplia con tanta claridad. Gracias.
Dmitry Minkovsky
¿Cómo podría extenderse este enfoque para transferir archivos individualmente en lugar de en un archivo? Sería un bucle de iteración sobre los resultados de sortla barorden remota alguna manera de lograr esto?
Dmitry Minkovsky
Puede ser, pero no veo el problema de transferirlo como una solución. Si lo piensa, no hay mucha diferencia entre este enfoque y scp, ambos envían metadatos y contenidos para cada archivo, solo usan un "protocolo" diferente. Supongo que podría iterar sobre los resultados, pero luego debería ocuparse de los archivos con espacios en blanco en sus nombres.
dnet
2
@dimadima, si te gusta tanto la respuesta, tal vez puedas aceptarla .
Peter V. Mørch
Esta respuesta funciona, pero hay que ajustarla al caso cuando los archivos tienen espacios en los nombres.
Ruslan
1
Uno puede lograr la transferencia de archivos con orden alfabético usando rsync:
sort
labar
orden remota alguna manera de lograr esto?scp
, ambos envían metadatos y contenidos para cada archivo, solo usan un "protocolo" diferente. Supongo que podría iterar sobre los resultados, pero luego debería ocuparse de los archivos con espacios en blanco en sus nombres.Uno puede lograr la transferencia de archivos con orden alfabético usando
rsync
:P
permite descargas parciales,e
establece el protocolo SSH yr
descargas recursivas.fuente
En caso de que esto ayude a alguien, proporcioné una solución simple aquí:
/programming/23067175
¡Todavía estoy esperando una forma más inteligente de hacerlo!
fuente