
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 -r
opção serve para copiar arquivos recursivamente, -z
permite a compactação durante a transferência e -p
preserva 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 man
páginas.
Responder2
Neste sftp
comando 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