2012-02-08 13:15:37 +0000 2012-02-08 13:15:37 +0000
29
29

sftp: carregar todos os ficheiros, directórios e subdirectórios contidos numa pasta

Na máquina A Tenho a pasta

/home/a/

Na máquina B Tenho a pasta

/home/b/

Desejo transferir todos os ficheiros, directórios e subdirectórios de /home/a in /home/b com sftp Na máquina A Experimentei os comandos:

sftp fibon82@machineB.com
put /home/a/* /home/b/

mas não funciona, recebo a mensagem de erro: “saltando ficheiro não regular /home/a/a1”… a1 é uma subdirectoria de a] Como poderia eu modificar a instrução de put?

Obrigado! :)

EDIT:

I solved using scp:

scp -r /home/a/ fibon82@machineB.com:/home/b/

Respostas (6)

21
21
21
2014-10-02 20:33:25 +0000

Em sftp este comando carrega recursivamente o conteúdo do directório actual para o directório actual remoto:

put -r .

Ver man sftp .

21
21
21
2012-02-08 22:41:19 +0000

Embora não estritamente equivalente ao sftp, rsync é uma alternativa muito poderosa para scp e sftp, especialmente quando actualiza as cópias da máquina A para a máquina B, pois não copia os ficheiros que não foram alterados; também é capaz de remover ficheiros da máquina B que foram eliminados da máquina A (apenas quando é dito para, claro).

No seu caso, a sintaxe seria

rsync -zrp /home/a/ user@remote.host.com:/home/b/

A opção -r é para copiar recursivamente ficheiros, -z permite a compressão durante a transferência, e -p preserva as permissões do ficheiro (criação do ficheiro, edição, etc.) ao copiar, o que é algo que o scp não faz AFAIK. Muitas mais opções são possíveis; como de costume, leia as páginas man.

10
10
10
2012-02-08 16:04:32 +0000

scp (cópia segura) é o Linux de facto para a transferência de ficheiros através de um túnel seguro. No seu caso, gostaria de utilizar o interruptor recursivo, por exemplo

scp -r /home/a/ user@remote.host.com:/home/b/
4
4
4
2014-01-04 14:02:14 +0000

Tente usar

put -r /home/a/ /home/b/

para mais informações, verifique: isto

0
0
0
2017-10-05 13:53:58 +0000

Na verdade, colocar -r deve funcionar. Mas a pasta de destino precisa de estar presente no seu anfitrião remoto:

sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder
 Couldn't canonicalize: No such file or directory
 ....
sftp> mkdir sourcefolder
sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder/sourcefolder
 Entering sourcefolder/
 sourcefolder/file1
 sourcefolder/file2
-1
-1
-1
2014-02-14 10:10:51 +0000

No meu caso rsync não era possível, por isso usei:

mput -rp /home/a/ /home/b/