Eu resolvo o problema com tar e a transparência do pipe de ssh . Um exemplo pode ser visto abaixo, o PC remoto é denominado bar . Antes do teste, criei três arquivos vazios em /tmp/foo executando 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 sinal -T de tar faz com que ele leia os nomes dos arquivos para compactar a partir do próximo parâmetro e - significa a entrada padrão. Agora você só precisa canalizar o nome dos arquivos para ele, que pode vir de ls (como no exemplo) ou find para tarefas mais complicadas. Com essa configuração, você pode usar sort para indicar a ordem exata em que os arquivos serão transmitidos por SSH (nesse caso, -r arquivos classificados em ordem alfabética reversa). O -v é adicionado somente ao final, descompactando tar , para que a ordem fique visível.