Pensando se é possível especificar uma ordem de classificação ao transferir arquivos com scp.
Por exemplo:
$ scp -r "user@host:/path/to/download/" .
[... files download in a seemingly random order ...]
Como talvez isso possa estar relacionado a como as scpfunções, existe alguma maneira de configurar o ssh no lado da fonte (servidor) para que os arquivos sejam transferidos, por exemplo, em ordem crescente de nome de arquivo?
Eu resolveria o problema tare a transparência dos tubos ssh. Um exemplo pode ser visto abaixo, o PC remoto é nomeado bar. Antes do teste, eu criei três arquivos vazios /tmp/fooexecutando 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
O -Tsinalizador de tarfaz com que ele leia nomes de arquivos para compactar a partir do próximo parâmetro e -significa a entrada padrão. Agora você só precisa inserir o nome dos arquivos nele, que podem vir ls(como no exemplo) ou findpara tarefas mais complicadas. Com essa configuração, você pode sortindicar a ordem exata em que os arquivos serão transmitidos através do SSH (nesse caso, os -rarquivos classificados em ordem alfabética inversa). Ele -vé adicionado apenas à final, descompactando tar, para que o pedido seja visível.
Woah, ótima abordagem de nível inferior e apresentando a imagem mais ampla de maneira tão clara. Obrigado.
Dmitry Minkovsky
Como essa abordagem pode ser estendida para transferir arquivos individualmente, e não em um arquivo morto? Seria um loop iteração sobre os resultados de sortno barcomando remoto de alguma forma conseguir isso?
Dmitry Minkovsky
Pode, mas não vejo o problema de transferi-lo como um arquivo. Se você pensar bem, não há muita diferença entre essa abordagem e scp- ambos enviam metadados e conteúdos para cada arquivo, eles apenas usam um "protocolo" diferente. Eu acho que você pode iterar sobre os resultados, mas deve cuidar de arquivos com espaço em branco em seus nomes.
Dnet
2
@dimadima, se você gosta tanto da resposta, talvez possa aceitar a resposta .
Peter V. Mørch
Essa resposta funciona, mas é preciso ajustá-la ao caso em que os arquivos têm espaços nos nomes.
Ruslan
1
Pode-se conseguir a transferência de arquivos em ordem alfabética usando rsync:
sort
nobar
comando remoto de alguma forma conseguir isso?scp
- ambos enviam metadados e conteúdos para cada arquivo, eles apenas usam um "protocolo" diferente. Eu acho que você pode iterar sobre os resultados, mas deve cuidar de arquivos com espaço em branco em seus nomes.Pode-se conseguir a transferência de arquivos em ordem alfabética usando
rsync
:P
permite o download parcial,e
define o protocolo SSH er
baixa recursivamente.fonte
Caso isso ajude alguém, forneci uma solução simples aqui:
/programming/23067175
Ainda à espera de uma maneira mais inteligente de fazê-lo!
fonte