Como sincronizar automaticamente o conteúdo de uma pasta local com o conteúdo de uma pasta ftp?

9

Depois de pesquisar em todos os lugares, não consegui encontrar uma resposta específica para minha pergunta.

No Windows, existe um aplicativo chamado FTPbox que sincroniza automaticamente uma pasta local com uma ftp a cada período definido.

Minha pergunta é: como faço para conseguir a mesma coisa usando o Ubuntu? A principal coisa é aqui que eu não quero ter que fazê-lo manualmente. Ele precisa ser um processo totalmente automático, sem a necessidade de intervenção humana (obviamente, terei que configurá-lo se isso for classificado como LOL de intervenção humana).

Muito obrigado antecipadamente por respostas úteis.

-Edward

Edward Nunn
fonte

Respostas:

16

Primeira solução

Instalar lftp

sudo apt-get install lftp

depois disso criar script

#!/bin/bash
HOST='mysite.com'
USER='myuser'
PASS='myuser'
TARGETFOLDER='/new'
SOURCEFOLDER='/home/myuser/backups'

lftp -f "
open $HOST
user $USER $PASS
lcd $SOURCEFOLDER
mirror --reverse --delete --verbose $SOURCEFOLDER $TARGETFOLDER
bye
"

Salve-o em algum lugar com o nome upload.sh. Dê +xpermissão.

sudo chmod +x /path_to_script/upload.sh

Instalação crontabpara executar este comando em cada xperíodo de tempo

Para editar o crontab run

crontab -e

Para executar o comando a cada 5 minutos, o código é

 */5 * * * * /path_to_script/upload.sh

a cada hora

 0 */1 * * * /path_to_script/upload.sh

para correr às 4 da manhã

 0 4 * * * /path_to_script/upload.sh

Solução dois

Crie um script pequeno e fácil chamado lftp-scriptque LFTPpossa ler:

open ftp://username:[email protected]
mirror -v --only-newer /home/local/path/ /website.com/public_html/

Finalmente, você pode executar LFTPe iniciar a sincronização. Definir crontab como eu escrevo, mas colocar comando

lftp -f /path/to/lftp-script

algo assim

 */5 * * * * lftp -f /path/to/lftp-script

Solução três

Instalar curlftpfs

sudo apt-get install curlftpfs

o que você precisa fazer para montar o ftp localmente é executar esses comandos criar dir que será sincronizado

mkdir hostr

monte o diretório ftp remoto no local

sudo curlftpfs -o allow_other ftp://user:[email protected] host

user: pass é o nome de usuário e a senha para fazer login na conta ftp.

Você pode adicionar curlftpfsà fstabmontagem automática usando esta linha:

curlftpfs#user:[email protected] /mnt/host fuse rw,uid=500,user,noauto 0 0
2707974
fonte
1
TARGETFOLDER = '/ new' = pasta no ftp? SOURCEFOLDER = '/ home / myuser / backups' = pasta local com os arquivos que eu quero enviar?
Edward Nunn
sim e sim. :)
2707974
dizendo este arquivo de transferência Untitled 1.odt' mirror: /home/edward/bl3/bl2/bl1/Untitled 1.odt: No such file or directory Unknown command ; '
Edward Nunn
Com base no caminho do servidor FTP, talvez não apenas a /newpasta. Verifique os dois caminhos.
2707974
Se você criar uma pasta source folderlocal, essa pasta deverá ser sincronizada com a pasta ftp.
2707974