Sincronizando Diretórios Locais com um Servidor FTP Usando lftp

*****Em algumas distros o comando curlftpfs foi retirado por ser muito antigo, neste caso, existe uma solução ainda melhor para resolver os problemas de sincrinia entre servidor e destino FTP, segue explicação:


No mundo da administração de servidores e redes, é comum precisar sincronizar diretórios locais com servidores FTP. Embora o rsync seja uma ferramenta poderosa para sincronização, ele não suporta FTP nativamente. É aí que entra o lftp, um cliente de FTP versátil que funciona muito bem para essa tarefa. Neste post, você aprenderá a configurar e automatizar a sincronização de arquivos locais para um servidor FTP usando lftp.

O que é o lftp?

O lftp é um cliente de linha de comando avançado para FTP, FTPS, HTTP, HTTPS, e SFTP. Ele é especialmente útil para sincronizar diretórios e espelhar arquivos entre máquinas locais e remotas. Com recursos como reconexão automática, transferência em segundo plano e suporte a scripts, o lftp se destaca como uma solução robusta para transferências de arquivos em servidores.

Passo 1: Instalando o lftp

Antes de começar, você precisa garantir que o lftp esteja instalado no seu sistema. No Linux, a instalação pode ser feita pelo gerenciador de pacotes:

# No Debian/Ubuntu
sudo apt update
sudo apt install lftp

# No Red Hat/CentOS
sudo yum install lftp

# No Arch Linux
sudo pacman -S lftp

Passo 2: Comando Básico para Sincronizar um Diretório

O lftp possui um comando chamado mirror que permite espelhar diretórios. Vamos usar um exemplo básico para sincronizar um diretório local com um diretório remoto no FTP:

lftp -e "mirror -R /diretorio/local /diretorio/remoto; quit" -u usuario,senha ftp://ftp.exemplo.com
  • mirror -R: O mirror sincroniza os diretórios, e o -R indica que a direção é do local para o remoto (reverse).
  • /diretorio/local: É o diretório local que você deseja sincronizar.
  • /diretorio/remoto: É o diretório no servidor FTP onde os arquivos serão armazenados.
  • -u usuario,senha: Credenciais de login no FTP. Dica: Para segurança, evite expor a senha e use um arquivo .netrc.
  • ftp://ftp.exemplo.com: O endereço do servidor FTP.

Passo 3: Configurando um Script de Automação

Para simplificar e automatizar a sincronização, você pode criar um script que execute esse comando. Salve o seguinte conteúdo em um arquivo chamado sync_ftp.sh:

#!/bin/bash

# Variáveis de configuração
FTP_HOST="ftp://ftp.exemplo.com"
FTP_USER="usuario"
FTP_PASS="senha"
LOCAL_DIR="/diretorio/local"
REMOTE_DIR="/diretorio/remoto"

# Comando lftp para espelhar o diretório local no FTP remoto
lftp -e "mirror -R ${LOCAL_DIR} ${REMOTE_DIR}; quit" -u ${FTP_USER},${FTP_PASS} ${FTP_HOST}

Passo 4: Automatizando com cron

Para que a sincronização aconteça automaticamente, você pode agendar o script usando o cron. Execute o seguinte comando:

crontab -e

Adicione uma linha ao final do arquivo para que o script seja executado a cada hora, por exemplo:

0 * * * * /caminho/para/sync_ftp.sh

Isso executará o script a cada hora. Você pode ajustar a frequência conforme necessário.

Passo 5: Personalizando o Comportamento com Opções Adicionais

O lftp oferece várias opções que ajudam a controlar como a sincronização ocorre:

  • --only-newer: Transfere apenas arquivos que são mais recentes do que os do servidor, evitando a substituição com versões mais antigas.
  • --ignore-time: Ignora a data de modificação e transfere todos os arquivos, independentemente de serem mais novos ou mais antigos.
  • --overwrite: Sobrescreve arquivos sempre que eles existirem, sem comparar.

Por exemplo, para garantir que somente arquivos mais novos sejam sincronizados:

lftp -e "mirror -R --only-newer /diretorio/local /diretorio/remoto; quit" -u usuario,senha ftp://ftp.exemplo.com

Dicas de Segurança

  1. Use um arquivo .netrc para armazenar credenciais: Em vez de expor seu nome de usuário e senha diretamente no script, crie um arquivo .netrc no seu diretório pessoal:
   machine ftp.exemplo.com
   login usuario
   password senha
  1. Defina as permissões adequadas:
   chmod 600 ~/.netrc
  1. Utilize FTPS ou SFTP: Se o seu servidor suportar, considere usar FTPS ou SFTP para maior segurança durante as transferências.

Conclusão

Usando o lftp, é possível configurar uma sincronização eficiente e automática entre um diretório local e um servidor FTP. Com suporte a scripts e opções avançadas, o lftp é a ferramenta ideal para garantir que seus arquivos estejam sempre atualizados, economizando tempo e largura de banda.

Se você já usou rsync e precisa de algo similar para FTP, o lftp é a melhor escolha. Experimente as configurações que mostramos e adapte para suas necessidades específicas!

Rolar para cima