O subcomando mget no sftp é um alias para get :
static const struct CMD cmds[] = {
{ "bye", I_QUIT, NOARGS },
...
{ "get", I_GET, REMOTE },
{ "mget", I_GET, REMOTE },
...
};
O get subcomando tem uma sintaxe de:
get [-afPpr] remote-path [local-path]
Se você der get ou mget vários parâmetros, ele trata o segundo como o destino de renomeação do primeiro. Como resultado, você não pode recuperar vários diretórios de uma só vez; você precisará pegá-los separadamente:
mget -r folder1
mget -r folder2
A sintaxe sftp também não permite o encadeamento de comandos no estilo de shell, portanto você não pode usar um comando como: . Também não há necessidade de tentar e get -r folder1 && ... sleep entre comandos get, a menos que você precise de um atraso para outros propósitos (um processo de observação local, para poupar a rede por alguns segundos, etc.).
Como alternativa a sftp , considere scp :
scp -r user@host:folder1 user@host:folder2 /local/directory
... que copiará recursivamente os diretórios remote folder1 e folder2 para o local /local/directory .