*****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
: Omirror
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
- 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
- Defina as permissões adequadas:
chmod 600 ~/.netrc
- 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!