Qualquer unix:
Eu tenho a seguinte linha 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).
rsync não funcionará para você pelas razões que outros mencionaram. No entanto, o lftp e o ncftp possuem 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:
Conforme escrito por cavalete ,
lftp
é uma boa ferramenta.Sugiro que você parametrize o script, e faça uso do
options, que exclui nomes de arquivos usando o recurso glob (*,? ..) do seu shell:
Atenção: certifique-se de que o diretório de destino existe, caso contrário o comando cd falhará, então a operação incluindo a exclusão de árvores de arquivos ocorrerá no diretório errado (raiz)!
Eu atualizei o script para que essa
--delete
opção seja desabilitada por padrão, habilite-a descomentando o arquivoDELETE= command
.Você não. rsync não pode fazer isso por você, é um protocolo próprio e não funciona via FTP.
Você pode, no entanto, tentar csync . IIRC fornece um comportamento semelhante ao rsync sobre HTTP. Não posso comentar se funciona por FTP, você terá que tentar.
Dependendo do que você está realmente tentando fazer, outra abordagem completamente diferente pode ser usada
curlftps
para montar uma pasta ftp e talvezrsync
as duas pastas "locais".A instalação é diferente dependendo da sua distro, então não posso generalizar sobre isso, mas você precisa instalar
fuse
ecurlftpfs
(prolly o Debian já temfuse
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, você pode adicioná-lo ao seu fstab (geralmente em
/etc/fstab
):Nesse caso, você deve certificar-se de que o módulo de fusível esteja carregado antes.
Esteja avisado, porém, de duas coisas:
curlftpfs
pode falhar (talvez você possa fazer algo com o.netrc
).Há weex ...
rsync não funciona por ftp. No lado remoto, ele precisa do daemon rsync ou de um shell do qual ele possa chamar o rsync. O FTP geralmente permite que você chame alguns comandos e o rsync não é um deles. Existem outras ferramentas destinadas a automatizar tarefas de ftp como "lftp".
Para o que parece que você está tentando fazer, você também pode usar wget.
wget -m ftp://username:[email protected]
Isso parece um ajuste bom e gratuito: https://savannah.gnu.org/projects/ftpsync/
Você pode usar curlftpfs para montar ftp e usar rsync após http://linux.die.net/man/1/curlftpfs
Estou usando GVFS/FTP. Eu monto meus servidores FTP remotos com gigolo. Como eles são vistos como diretórios locais, quase tudo que funciona em arquivos locais funciona. O rsync foi projetado para calcular hashes de arquivos remotamente para comparar arquivos sem transferi-los, mas fazer isso com arquivos virtuais transfere os arquivos de qualquer maneira. unison e freefilesync normalmente funcionam bem, mas eu encontrei um problema quando eles querem renomear um arquivo que você carregou, sem problemas para baixar. Isso pode ser um problema com o gvfs 1.6.1.