Enquanto eu usaria rsync
aqui, essa é uma tentativa como resposta direta à pergunta.
Com o OpenSSH 7.4p1 no Debian GNU / Linux amd64, pelo menos, e ao copiar remotamente (isto é, onde a origem ou o destino está em um host remoto), parece que scp -r
processa os arquivos na ordem em que lê-los nos diretórios.
Esse é o mesmo pedido que você recebe:
printf '%s\n' **/*(D.oN)
em zsh
, por exemplo. O qualificador oN
glob é para desativar a classificação. Veja também tree -U
:
$ tree -U 1
1
├── 2
│ ├── 4
│ │ └── 2-4
│ ├── 2
│ │ └── 2-2
│ ├── 3
│ │ └── 2-3
│ └── 1
│ └── 2-1
├── 3
│ ├── 4
│ │ └── 3-4
│ ├── 2
│ │ └── 3-2
│ ├── 3
│ │ └── 3-3
│ └── 1
│ └── 3-1
└── 1
├── 4
│ └── 1-4
├── 2
│ └── 1-2
├── 3
│ └── 1-3
└── 1
└── 1-1
$ print -rl 1/**/*(D.oN)
1/2/4/2-4
1/2/2/2-2
1/2/3/2-3
1/2/1/2-1
1/3/4/3-4
1/3/2/3-2
1/3/3/3-3
1/3/1/3-1
1/1/4/1-4
1/1/2/1-2
1/1/3/1-3
1/1/1/1-1
$ scp -r localhost:1 2
2-4 100% 5 11.6KB/s 00:00
2-2 100% 5 38.9KB/s 00:00
2-3 100% 5 19.6KB/s 00:00
2-1 100% 5 19.6KB/s 00:00
3-4 100% 5 32.1KB/s 00:00
3-2 100% 5 38.8KB/s 00:00
3-3 100% 5 37.5KB/s 00:00
3-1 100% 5 28.4KB/s 00:00
1-4 100% 5 23.8KB/s 00:00
1-2 100% 5 39.1KB/s 00:00
1-3 100% 5 42.8KB/s 00:00
1-1 100% 5 40.9KB/s 00:00