SFTP mget e comando get para copiar várias pastas ou arquivos para um diretório do servidor

1

Eu precisava copiar várias pastas do mesmo diretório usando um comando. Então eu fiz isso primeiro,

sftp > mget -r folder1 folder2

Este comando copiou a pasta1 para o servidor de destino, mas renomeou para folder2

Eu provavelmente deveria ter feito algo como o seguinte. Mas eu não tentei

sftp > get -r folder1 && sleep 5 && get -r folder2

Eu não tentei isso, mas acho que teria funcionado.

Existe alguma alternativa melhor para isso?

    
por Rakib Fiha 30.10.2018 / 13:06

2 respostas

3

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: get -r folder1 && ... . Também não há necessidade de tentar e 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 .

    
por 30.10.2018 / 13:34
0

Se suas pastas forem folder1 e folder2, você poderá obtê-las usando um comando.

get -r folder[1-2]

get [-afPpr] remote-path [local-path]
Retrieve the remote-path and store it on the local machine. If the local path name is not specified, it is given the same name it has on the remote machine. remote-path may contain glob(7) characters and may match multiple files. If it does and local-path is specified, then local-path must specify a directory.

    
por 30.10.2018 / 16:40

Tags