EDITAR:

EDITAR:

Na máquina AI tem a pasta

/home/a/

Na máquina BI tem a pasta

/home/b/

Desejo transferir todos os arquivos, diretórios e subdiretórios de /home/a em /home/b com sftp. Na máquina AI tentei os comandos:

sftp [email protected]
put /home/a/* /home/b/

mas não funciona, recebo a mensagem de erro: "skipping non-regular file /home/a/a1"... [a1 é um subdiretório de a]
Como posso modificar a instrução put?

Obrigado! :)

EDITAR:

Eu resolvi usando scp:

scp -r /home/a/ [email protected]:/home/b/

Responder1

Embora não seja estritamente equivalente ao sftp,sincronizar novamenteé uma alternativa muito poderosa para scp e sftp, principalmente na atualização das cópias da máquina A para a máquina B, pois não copia os arquivos que não foram alterados; também é capaz de remover arquivos da máquina B que foram excluídos da máquina A (somente quando solicitado, é claro).

No seu caso, a sintaxe seria

rsync -zrp /home/a/ [email protected]:/home/b/

A -ropção serve para copiar arquivos recursivamente, -zpermite a compactação durante a transferência e -ppreserva as permissões do arquivo (criação, edição de arquivo, etc.) ao copiar, algo que o scp não faz no AFAIK. Muitas outras opções são possíveis; como sempre, leia as manpáginas.

Responder2

Neste sftpcomando carrega recursivamente o conteúdo do diretório atual para o diretório atual remoto:

 put -r .

Verman sftp.

Responder3

scp(cópia segura) é o Linux de fato para transferência de arquivos através de um túnel seguro. No seu caso, você gostaria de usar a opção recursiva, por exemplo:

scp -r /home/a/ [email protected]:/home/b/

Responder4

Na verdade, put -r deve funcionar. Mas a pasta de destino precisa estar presente no seu host 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

informação relacionada