Na máquina AI, tem a pasta
/home/a/
Na máquina BI, tenha 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: "pulando arquivo não-regular / home / a / a1" ... [a1 é um subdiretório de a]
Como eu modifiquei a instrução put?
Obrigado! :)
EDITAR:
Eu resolvi usando scp:
scp -r /home/a/ [email protected]:/home/b/
put -r
teria funcionado também.sftp
, consulte o projeto OpenSSH .Respostas:
Embora não seja estritamente equivalente ao sftp, o rsync é uma alternativa muito poderosa para scp e sftp, especialmente ao atualizar as 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
A
-r
opção é copiar arquivos recursivamente,-z
habilitar a compactação durante a transferência e-p
preservar as permissões do arquivo (criação, edição, etc.) ao copiar, o que é algo que o scp não executa no AFAIK. Muitas outras opções são possíveis; como sempre, leia asman
páginas.fonte
rsync
não falasftp
-Protocol. Portanto, se você configurar umsftp
-chroot usandossh
a compilação de,internal-sftp
entãorsync
falhará.Nesse
sftp
comando, carrega recursivamente o conteúdo do diretório atual para o diretório atual remoto:Veja
man sftp
.fonte
-r
switch é suportado desde apenas o OpenSSH 5.4 .-r
switch é apenas do lado do cliente (parte dosftp
comando). Portanto, o lado do servidor (aqui: recebimento) não precisa do OpenSSH 5.4, apenas o cliente precisa suportá-lo.scp
(cópia segura) é o Linux de fato para transferir arquivos através de um túnel seguro. No seu caso, você desejaria usar a opção recursiva, por exemplo:fonte
Tente usar
para mais informações confira: este
fonte
-r
switch é suportado desde apenas o OpenSSH 5.4 .-r
switch é apenas do lado do cliente (parte dosftp
comando). Portanto, o lado do servidor (aqui: recebimento) não precisa do OpenSSH 5.4, apenas o cliente precisa suportá-lo. E: Essa deve ser a resposta aceita , já que obter (o possivelmente não suportado)rsync
como resposta a uma pergunta marcadasftp
é um pouco confuso.Na verdade, put -r deve funcionar. Mas a pasta de destino precisa estar presente no seu host remoto:
fonte
No meu caso
rsync
não foi possível, então usei:fonte
mput
comando no OpenSSHsftp
. Talvez você se referepsftp
?