Qualquer unix:
Eu tenho a seguinte linha de cmd que funciona bem.
rsync -avr -e ssh /home/dir [email protected]:/home/
Mas preciso configurá-lo agora para rsync em um servidor remoto que tenha apenas um servidor FTP. Como eu faço isso?
Eu olhei para a ajuda do rsync, mas rapidamente me perdi (eu não faço essas coisas com muita frequência).
Respostas:
Você não O rsync não pode fazer isso por você, é um protocolo próprio e não funciona via FTP.
Você pode, no entanto, querer experimentar o csync . IIRC fornece comportamento semelhante ao rsync sobre HTTP. Não posso comentar se funciona via FTP, você terá que tentar.
fonte
O rsync não funcionará para você pelas razões que outras pessoas mencionaram. No entanto, lftp e ncftp têm modos "espelho" que provavelmente atenderão às suas necessidades.
Eu uso isso para enviar coisas do meu diretório local para um host ftp ou sftp:
fonte
wput
que tem limitação de largura de banda embutida.Como escrito por cavalete ,
lftp
é uma boa ferramenta.Sugiro que você parametrize o script e faça uso do
opções, que exclui nomes de arquivos usando o recurso glob (* ,? ..) do seu shell:
Aviso: verifique se o diretório de destino existe; caso contrário, o comando cd falhará; portanto, a operação incluindo a exclusão de árvores de arquivos ocorrerá no diretório errado (raiz)!
Eu atualizei o script para que a
--delete
opção seja desabilitada por padrão, habilite-o descomentando oDELETE= command
.fonte
cd $RCD
, de modo a impedir que um script-com-a-typo a exclusão acidental de arquivos do diretório errado:set cmd:fail-exit yes
. (Parece quelftp
não percebe que ele realmente saiu, até que você emitir o próximo comando.) - E antes decd $LCD
eu fazer isso (no shell local, ou seja, no topo do scrip):set -eu
.mirror
, e assim--delete
: d arquivos do diretório errado. (Mas eu copiei-los de volta, então, nesse caso, não importava Talvez isso é importante para alguém..)Dependendo do que você está realmente tentando fazer, outra abordagem completamente diferente pode ser usada
curlftps
para montar uma pasta ftp e, talvez,rsync
as duas pastas "locais".A instalação é diferente dependendo da sua distribuição, então não posso generalizar isso, mas você precisa instalar
fuse
ecurlftpfs
(prolly o Debian já possui afuse
instalação por padrão), então:sudo apt-get install curlftpfs
Verifique se o
fuse
módulo está carregado (modprobe fuse
)sudo curlftpfs ftp.yourserver.com /path/to/ftp/folder/ -o user=username:password,allow_other
Observe que não há espaço após a última vírgula (não é um erro de digitação!). Se você estiver satisfeito com isso ou não quiser fazer isso sempre, adicione-o ao seu fstab (geralmente em
/etc/fstab
):Nesse caso, você deve garantir que o módulo de fusível esteja carregado antes.
Esteja ciente de duas coisas:
curlftpfs
poderá falhar (talvez você possa fazer algo com o.netrc
).fonte
umount DIR
ondeDIR
estava seu/path/to/ftp/folder
acima.Há weex ...
fonte
$ weex yourFTPconfigName
Aqui está o manual linuxcertif.com/man/1/weexO rsync não funciona sobre ftp. No lado remoto, ele precisa do daemon rsync ou de um shell do qual possa chamar rsync. O FTP geralmente permite que você chame alguns comandos e o rsync não é um deles. Existem outras ferramentas destinadas a automatizar tarefas ftp como "lftp".
fonte
Parece um ajuste bom e gratuito: https://savannah.gnu.org/projects/ftpsync/
fonte
Pelo que parece que você está tentando fazer, você também pode usar o wget.
wget -m ftp: // nome do usuário: senha@domínio.com
fonte
Você pode usar curlftpfs para montar o ftp e usar o rsync após http://linux.die.net/man/1/curlftpfs
fonte
Estou usando GVFS / FTP. Eu monto meus servidores FTP remotos com gigolo. Como eles são vistos como diretórios locais, quase tudo funciona nos arquivos locais. O rsync foi projetado para calcular remotamente hashes de arquivos para comparar arquivos sem transferi-los, mas fazer isso com arquivos virtuais transfere os arquivos de qualquer maneira. uníssono e freefilesync normalmente funcionam bem, mas encontrei um problema quando eles querem renomear um arquivo carregado, sem problemas ao fazer o download. Isso pode ser um problema com o gvfs 1.6.1.
fonte
A solução do Jonas S pode ser útil dependendo da circunstância, por exemplo, se você tiver uma alta velocidade de download e upload lento, a verificação dos arquivos no servidor pode ser relativamente mais rápida do que o upload desnecessário de arquivos.
Você provavelmente deseja usar o CurlFTPFS: http://packages.ubuntu.com/search?suite=default§ion=all&arch=any&searchon=names&keywords=curlftpfs
Embora, geralmente, seja melhor usar um cliente FTP normal em vez do rsync.
fonte
Eu não acredito que você será capaz de fazer isso, o servidor para o qual você está tentando fazer o Rsync terá apenas um servidor FTP em execução, ele não entenderá os comandos que o Rsync está enviando.
Se o motivo para fazer isso é que você só tem acesso à porta 21, mas tem controle do servidor, pode alterar a porta que o Rsync escuta, no servidor, mas obviamente isso só será útil se você não tiver deseja usar o FTP nessa porta.
fonte
Se você deseja automatizar a tarefa e usar o lftp, pois pode criar um script como algumas pessoas postaram acima, é possível criar um script de maneira muito fácil ao seu gosto, se estiver procurando uma solução única (ou seja, você precisa baixar um site inteiro via ftp / mova-o para outro servidor) use ncftp, é simples, instale-o se ainda não estiver instalado:
ou
(desculpe distros não baseados em debian / red hat ..)
uma vez instalado, abra o ncftp no terminal e digite:
Ele solicitará a senha, digite-a e depois:
Fará o resto do trabalho para você .. boa sorte
fonte
Usar "sitecopy" ou "mirror" pode economizar muita largura de banda.
Ambos lidam com atualizações incrementais eficientes.
fonte
Há também wput:
O nome de usuário e a senha são lidos em ~ / .netrc. Caso contrário, se você não estiver particularmente preocupado com a segurança, poderá fornecê-los como ftp: // nome do usuário: [email protected] .
fonte
Eu fiz a própria ferramenta de linha de comando para isso: ftpsync
Por quê? Por ser simples e elegante, outras ferramentas exigem muitas dependências, às vezes compilando, às vezes não funcionam (por exemplo, lftp no MacOs High Sierra). O ftpsync é escrito em Python puro, não requer bibliotecas de terceiros e é pequeno, basta incluir o arquivo no seu projeto.
Uso: cd no diretório do projeto e digite:
--delete
significa excluir arquivos remotos que não existem localmente.Se você não deseja sincronizar, mas apenas executar o comando raw ftp, use:
É útil para algumas operações simples, como enviar arquivo e renomeá-lo:
fonte
O rclone é um bom software que sincroniza diretórios por ftp e muitos outros protocolos, incluindo provedores de armazenamento em nuvem (Amazon S3, Dropbox, Google Drive). Pode sincronizar de / para qualquer combinação de armazenamento local ou remoto.
Para configurar um
ftp
controle remoto, siga estas instruções .Feito isso, a operação de sincronização é:
fonte
Instale o sftp e então você pode usar o rsync.
Eu uso o seguinte.
fonte