Rclone em VPS: como automatizar backups e sincronização com systemd
Aprenda o que é o rclone, por que ele é uma ferramenta tão útil para VPS, como configurar um remote, automatizar cópias com systemd e timer e acompanhar os logs pelo journalctl.

Administrar uma VPS não significa apenas manter a aplicação funcionando. Também é necessário pensar em backup, redundância e na forma mais segura de enviar arquivos para outro servidor ou serviço de armazenamento.
É nesse cenário que o rclone se destaca.
O rclone é uma ferramenta de linha de comando para gerenciamento de arquivos em armazenamento local e em dezenas de serviços de nuvem. Atualmente, sua documentação informa suporte a mais de 70 produtos de armazenamento, incluindo serviços compatíveis com S3, Google Drive, Dropbox, OneDrive, WebDAV, SFTP e diversos outros backends.
Neste artigo vamos partir do zero e montar uma solução prática para uma VPS Linux:
- instalar o rclone;
- configurar um armazenamento remoto;
- testar a sincronização;
- criar um serviço
systemd; - agendar sua execução com
systemd timer; - consultar os logs;
- validar se os arquivos realmente chegaram ao destino.
O que é o rclone?
O rclone é um utilitário de linha de comando para copiar, sincronizar, mover, listar e gerenciar arquivos entre diferentes sistemas de armazenamento.
A sintaxe é intencionalmente parecida com ferramentas tradicionais do Linux, como cp, mv, ls e rsync, mas com foco especial em serviços de armazenamento remoto.
Um exemplo simples:
rclone copy /var/backups remote:backupsNesse exemplo:
/var/backupsé a origem local;remote:é o armazenamento remoto configurado;backupsé o diretório de destino.
O conceito de remote é importante. Em vez de criar um comando completamente diferente para cada provedor, configuramos o serviço uma vez e depois utilizamos uma interface consistente:
remote:pathPor exemplo:
gdrive:server-backups
s3:my-bucket
b2:backups
onedrive:serversO nome remote é apenas um exemplo. Você pode escolher o nome que quiser durante a configuração.
Rclone é uma ferramenta de backup?
Essa é uma distinção importante.
O rclone é excelente para copiar e sincronizar arquivos, mas isso não significa que toda utilização do rclone seja automaticamente um sistema completo de backup.
Por exemplo:
rclone copy /srv/app/backups remote:backupscopia arquivos para outro armazenamento.
Já:
rclone sync /srv/app/backups remote:backupsfaz com que o destino reflita a origem e pode remover arquivos que não existem mais na origem. A própria documentação alerta que sync pode causar perda de dados e recomenda testar com --dry-run ou --interactive.
Para uma rotina de backup, normalmente começo com:
rclone copyem vez de:
rclone syncIsso reduz o risco de que uma exclusão acidental na origem também provoque uma exclusão no destino.
Se a necessidade for manter histórico, snapshots, deduplicação e um repositório de backup versionado, ferramentas como o restic são mais apropriadas. O restic trabalha explicitamente com snapshots, deduplicação e criptografia do repositório.
Uma arquitetura bastante interessante é inclusive combinar as duas ferramentas: o restic cuida da estratégia de backup e o rclone fornece o armazenamento remoto.
Principais vantagens do rclone
1. Uma interface para vários provedores
Uma das maiores vantagens do rclone é evitar que cada serviço tenha uma ferramenta ou procedimento completamente diferente.
Você pode ter:
Google Drive
Amazon S3
Cloudflare R2
Backblaze B2
Dropbox
OneDrive
SFTP
WebDAVe trabalhar com todos usando comandos do próprio rclone. A lista oficial de backends é extensa e continua incluindo novos provedores e protocolos.
2. Excelente para automação
Como tudo funciona pela linha de comando, o rclone se encaixa naturalmente em:
bash
systemd
cron
CI/CD
scripts
rotinas de backup
jobs de manutençãoIsso é especialmente útil em servidores Linux, onde queremos que uma tarefa possa ser executada sem interface gráfica.
3. Transferências entre armazenamentos
O rclone não precisa necessariamente trabalhar apenas entre “VPS → nuvem”.
Dependendo do backend, ele também pode realizar transferências entre armazenamentos remotos, reduzindo a necessidade de trazer os arquivos primeiro para o disco local. A documentação destaca justamente essa capacidade de trabalhar com transferências entre diferentes provedores quando suportado pelo backend.
Isso pode ser bastante útil em migrações.
4. Verificação e retomada
O rclone utiliza mecanismos de verificação baseados em metadados e hashes quando disponíveis, e possui comandos específicos para validar se origem e destino correspondem.
Também é possível executar novamente uma transferência interrompida sem necessariamente recomeçar tudo do zero.
5. Recursos além de cópia
O rclone não se limita a copiar arquivos.
Ele também possui recursos como:
rclone mount
rclone check
rclone cryptcheck
rclone bisync
rclone serveAlém disso, existem backends virtuais para recursos como criptografia, compressão, união de storage e outros.
Rclone x rsync x restic
As ferramentas podem parecer semelhantes, mas atendem a objetivos diferentes.
| Ferramenta | Principal objetivo | Armazenamento em nuvem | Snapshots | Deduplicação |
|---|---|---|---|---|
| Rclone | Copiar e sincronizar arquivos | Excelente | Não por padrão | Não |
| Rsync | Sincronização entre sistemas de arquivos | Indireto | Não | Não |
| Restic | Backup versionado | Excelente | Sim | Sim |
O rsync continua sendo extremamente útil para sincronização de arquivos entre máquinas Linux e pode utilizar SSH como transporte.
O restic, por outro lado, foi projetado especificamente como ferramenta de backup e trabalha com snapshots, criptografia e deduplicação.
Já o rclone fica em uma posição interessante quando o problema é:
“Preciso enviar e gerenciar arquivos em um storage remoto de forma simples e automatizável.”
Instalando o rclone em uma VPS
A documentação oficial disponibiliza instalador para Linux e também binários pré-compilados.
Uma opção simples:
sudo -v
curl https://rclone.org/install.sh | sudo bashDepois:
rclone versionO comando deve retornar a versão instalada.
Para ambientes em que prefiro controlar mais explicitamente o processo de instalação, também é possível baixar o binário oficial e instalá-lo manualmente. A documentação oficial detalha esse procedimento.
Configurando um remote
O próximo passo é criar a conexão com o serviço de armazenamento.
Execute:
rclone configO rclone abrirá um assistente interativo para criação do remote.
Depois de configurar:
rclone listremotesPodemos testar:
rclone lsd remote:ou:
rclone ls remote:Também podemos verificar onde está o arquivo de configuração:
rclone config fileEm Linux, o caminho padrão normalmente fica em:
~/.config/rclone/rclone.confmas o caminho pode variar conforme a configuração do ambiente.
Configuração em uma VPS sem interface gráfica
Esse ponto aparece bastante quando usamos serviços que exigem autenticação via navegador.
Uma possibilidade é configurar o remote em outra máquina e depois transferir o arquivo de configuração para a VPS. O próprio rclone documenta esse procedimento.
Por exemplo:
rclone config filena máquina onde o remote foi configurado.
Depois podemos copiar o arquivo para o servidor:
scp ~/.config/rclone/rclone.conf user@server:/tmp/rclone.confNa VPS:
sudo install -d -m 700 /home/rclone/.config/rclone
sudo install -m 600 /tmp/rclone.conf /home/rclone/.config/rclone/rclone.conf
sudo chown -R rclone:rclone /home/rclone/.configO importante é que o usuário que executará o serviço tenha acesso ao arquivo.
Criando um usuário específico para o backup
Eu prefiro não executar rotinas de backup automaticamente como root quando isso não é necessário.
Podemos criar um usuário dedicado:
sudo useradd \
--system \
--create-home \
--home-dir /home/rclone \
--shell /usr/sbin/nologin \
rcloneDepois:
sudo install -d -m 700 /home/rclone/.config/rclone
sudo chown -R rclone:rclone /home/rcloneA ideia é simples:
root
└── administra o servidor
rclone
└── executa a rotina de backupIsso reduz o impacto caso a rotina seja comprometida ou configurada incorretamente.
Primeiro teste manual
Antes de envolver systemd, devemos provar que o comando funciona.
Imagine que os backups da aplicação estejam em:
/var/backups/myappe que o remote seja:
remote:Podemos começar com:
sudo -u rclone rclone copy \
/var/backups/myapp \
remote:myappPara enxergar mais detalhes:
sudo -u rclone rclone copy \
/var/backups/myapp \
remote:myapp \
--progress \
--log-level INFOAntes de usar sync, uma boa prática é testar com:
rclone sync \
/var/backups/myapp \
remote:myapp \
--dry-runO --dry-run permite observar o que seria alterado sem executar as mudanças.
copy ou sync?
Esse é provavelmente o detalhe mais importante de todo o artigo.
copy
rclone copy origem destinoCopia arquivos novos ou alterados e não transforma o destino em um espelho exato da origem.
Para uma rotina simples de envio de backups, costuma ser uma opção mais conservadora.
sync
rclone sync origem destinoFaz o destino corresponder à origem, incluindo exclusões quando aplicável.
Imagine:
ORIGEM
backup-01.sql
backup-02.sql
DESTINO
backup-01.sql
backup-02.sql
backup-03.sqlCom sync, o arquivo:
backup-03.sqlpoderá ser removido do destino.
Por isso, sync deve ser usado conscientemente. A documentação oficial trata explicitamente essa operação como potencialmente destrutiva.
Usando --backup-dir
Quando realmente precisamos de sync, existe um recurso interessante:
--backup-dirEle permite mover arquivos que seriam substituídos ou removidos para outro diretório de backup.
Por exemplo:
rclone sync \
/var/backups/myapp \
remote:myapp \
--backup-dir remote:myapp-oldIsso cria uma camada adicional de proteção para alterações e exclusões.
Ainda assim, eu não trataria isso como substituto de uma estratégia de retenção de backups.
Automatizando com systemd
Depois de validar o comando manualmente, podemos automatizá-lo.
Crie:
sudo nano /etc/systemd/system/rclone-backup.serviceConteúdo:
[Unit]
Description=Backup da VPS via rclone
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
User=rclone
Group=rclone
UMask=0077
ExecStart=/usr/bin/rclone copy \
/var/backups/myapp \
remote:myapp \
--log-level INFO \
--stats 1m
StandardOutput=journal
StandardError=journalAqui existem alguns detalhes importantes.
Type=oneshot significa que o serviço executa uma tarefa e termina.
Não precisamos manter um processo rodando continuamente.
Também estamos enviando a saída para o journal do systemd, o que elimina a necessidade de criar imediatamente um arquivo de log separado.
Criando o timer
Agora criamos o agendamento:
sudo nano /etc/systemd/system/rclone-backup.timerConteúdo:
[Unit]
Description=Agendamento do backup via rclone
[Timer]
OnCalendar=*-*-* 02:30:00
Persistent=true
RandomizedDelaySec=5m
[Install]
WantedBy=timers.targetNesse exemplo, o backup será executado diariamente aproximadamente às:
02:30OnCalendar permite definir o horário usando uma expressão de calendário do systemd.
Já:
Persistent=truefaz com que o systemd registre quando o timer deveria ter disparado e execute o serviço após a inicialização caso o servidor tenha ficado desligado durante o período.
O:
RandomizedDelaySec=5madiciona uma pequena variação no horário real de execução, útil quando vários servidores possuem tarefas semelhantes.
Habilitando o timer
Depois de criar os dois arquivos:
sudo systemctl daemon-reloadHabilite o timer:
sudo systemctl enable --now rclone-backup.timerVerifique:
systemctl status rclone-backup.timerE liste os timers:
systemctl list-timersDevemos encontrar algo semelhante a:
rclone-backup.timercom a próxima execução programada.
Testando o serviço imediatamente
Não precisamos esperar até 02:30 para descobrir se funciona.
Podemos executar diretamente:
sudo systemctl start rclone-backup.serviceDepois:
systemctl status rclone-backup.serviceComo é um serviço oneshot, é normal que ele apareça como:
inactive (dead)depois de uma execução bem-sucedida.
O que importa é o resultado da execução.
Consultando os logs
Essa é uma das melhores partes de usar systemd.
Para visualizar os logs:
journalctl -u rclone-backup.servicePara mostrar somente a execução mais recente:
journalctl -u rclone-backup.service -n 100Para acompanhar em tempo real:
journalctl -u rclone-backup.service -fPara ver as mensagens da execução de hoje:
journalctl -u rclone-backup.service --since todayO journalctl permite filtrar o journal por unidade systemd e por vários outros critérios.
Logs mais detalhados
Durante um diagnóstico, podemos aumentar o nível de log.
Por exemplo:
rclone copy \
/var/backups/myapp \
remote:myapp \
--log-level DEBUGOs níveis de log disponíveis incluem ERROR, NOTICE, INFO e DEBUG.
Para uma rotina normal de produção, INFO costuma ser suficiente. DEBUG é mais indicado para investigação de problemas.
Também podemos gravar diretamente em um arquivo usando:
--log-file=/var/log/rclone-backup.logA documentação do rclone disponibiliza --log-file e --log-level como opções globais.
Mesmo assim, quando já usamos systemd, prefiro começar pelo journal:
journalctl -u rclone-backup.serviceporque o próprio sistema operacional já centraliza os logs.
Verificando se o backup realmente aconteceu
Um job terminar sem erro não significa que devemos deixar de verificar o resultado.
Podemos listar o destino:
rclone ls remote:myappou:
rclone lsf remote:myappTambém podemos consultar o tamanho:
rclone size remote:myappValidando origem e destino
O rclone possui um comando específico para comparar os arquivos:
rclone check \
/var/backups/myapp \
remote:myappEsse comando compara os arquivos da origem e do destino usando tamanho e hashes quando disponíveis e não modifica os dados.
Em uma rotina de manutenção podemos executar, por exemplo:
rclone check \
/var/backups/myapp \
remote:myapp \
--one-wayO --one-way verifica que os arquivos da origem existem corretamente no destino sem considerar arquivos extras no destino como erro.
Para backups importantes, essa validação periódica pode ser tão importante quanto a própria cópia.
Protegendo as credenciais
O arquivo de configuração do rclone contém informações sensíveis relacionadas aos remotes.
Por isso, não devemos deixá-lo disponível para qualquer usuário.
Um exemplo:
chmod 700 /home/rclone/.config/rclone
chmod 600 /home/rclone/.config/rclone/rclone.confE:
chown -R rclone:rclone /home/rclone/.config/rcloneO rclone também oferece proteção adicional para o arquivo de configuração por meio de senha.
Existe, porém, uma diferença importante entre obfuscar e proteger criptograficamente uma informação.
O comando:
rclone obscurenão deve ser interpretado como um mecanismo de segurança forte. A própria documentação descreve obscure como uma forma de evitar que uma senha fique imediatamente legível no arquivo de configuração, enquanto a proteção do arquivo de configuração deve ser tratada separadamente.
Criptografando os arquivos antes de enviá-los
Outro recurso interessante do rclone é o backend crypt.
Ele permite criar um remote criptografado sobre outro remote. Assim:
VPS
|
v
rclone crypt
|
v
Google Drive / S3 / B2 / etc.O conteúdo armazenado no destino fica criptografado e o rclone realiza a criptografia e descriptografia de forma transparente durante o acesso.
Por exemplo:
backup:
↓
crypt:
↓
remote:Dessa forma, mesmo que o storage remoto não ofereça criptografia do conteúdo da maneira desejada, podemos adicioná-la na camada do rclone.
Cuidados importantes em uma VPS
Uma rotina de backup automatizada parece simples, mas existem alguns erros comuns.
Não testar somente o upload
Não basta verificar:
"o comando terminou"É importante confirmar:
arquivo existe no destino
arquivo pode ser lido
arquivo corresponde à origem
restauração é possívelNão usar sync sem entender as exclusões
Um comando como:
rclone sync /var/backups remote:backupspode ser correto em determinado cenário.
Mas também pode transformar uma exclusão local em uma exclusão remota.
Antes de usar:
synceu sempre testaria com:
--dry-rune avaliaria cuidadosamente a saída.
Não executar tudo como root
Quando a aplicação não precisa de privilégios administrativos para realizar o backup, vale utilizar um usuário dedicado.
Isso reduz a superfície de impacto de uma falha na rotina de automação.
Não esquecer o restore
O maior erro em qualquer estratégia de backup é descobrir no dia do desastre que o restore não funciona.
Devemos testar periodicamente:
rclone copy remote:myapp/test-backup /tmp/restore-teste validar os arquivos restaurados.
Uma estrutura que gosto de usar
Para uma VPS simples, uma arquitetura prática pode ser:
/var/backups/
└── myapp/
├── database/
│ ├── backup-2026-09-25.sql.gz
│ └── backup-2026-09-26.sql.gz
└── application/
├── backup-2026-09-25.tar.gz
└── backup-2026-09-26.tar.gzDepois:
+-------------------+
| VPS |
| |
| /var/backups |
+---------+---------+
|
| rclone
v
+-------------------+
| Cloud Storage |
| |
| myapp/ |
+-------------------+E o systemd fica responsável pelo agendamento:
rclone-backup.timer
|
v
rclone-backup.service
|
v
rclone
|
v
Cloud StorageOs logs:
rclone
|
v
systemd-journald
|
v
journalctlChecklist rápido
Antes de considerar a automação pronta, eu verificaria:
[ ] rclone instalado
[ ] remote configurado
[ ] acesso ao remote testado
[ ] usuário dedicado criado
[ ] permissões da configuração revisadas
[ ] comando manual testado
[ ] --dry-run testado quando aplicável
[ ] copy/sync escolhido conscientemente
[ ] service criado
[ ] timer criado
[ ] timer habilitado
[ ] primeira execução validada
[ ] logs revisados
[ ] arquivos no destino conferidos
[ ] rclone check executado
[ ] restore testadoConclusão
O rclone é uma ferramenta extremamente útil para quem administra VPS porque transforma diferentes serviços de armazenamento em uma interface de linha de comando consistente.
Seu principal diferencial não é apenas “copiar arquivos para a nuvem”. É poder trabalhar com diversos backends, automatizar transferências, verificar integridade, realizar migrações e integrar armazenamento remoto a scripts e serviços Linux.
Para uma rotina simples, uma combinação como:
VPS
+
/var/backups
+
rclone
+
systemd timer
+
journalctljá pode criar uma solução bastante eficiente.
Mas é importante separar os conceitos: rclone é excelente como ferramenta de transferência e gerenciamento de storage; uma estratégia completa de backup também precisa pensar em retenção, histórico, isolamento, criptografia, monitoramento e restauração.
Em outras palavras:
Fazer backup é copiar os dados. Ter uma estratégia de backup é saber que eles poderão ser recuperados quando você realmente precisar deles.
Referências
Rclone documentation: https://rclone.org/docs/
Rclone installation: https://rclone.org/install/
Rclone sync:
https://rclone.org/commands/rclone_sync/
Rclone check:
https://rclone.org/commands/rclone_check/
Rclone crypt:
https://rclone.org/crypt/
systemd timers: https://www.freedesktop.org/software/systemd/man/latest/systemd.timer.html
journalctl: https://www.freedesktop.org/software/systemd/man/latest/journalctl.html