Automatize backups criptografados do servidor com uma tarefa cron
Última atualização: 2026-09-01
Backups que você precisa lembrar de executar não acontecem. O cron lembra, e a CLI do Relayium foi feita para isso: um único comando não interativo que copia (ou espelha) um diretório para outra máquina e verifica cada arquivo que transfere.
Este guia aborda como agendar o relayium push e o relayium sync incremental pelo cron, o transporte daemon direto que ambos usam e as linhas de crontab para copiar.
push versus sync: cópia completa ou espelho incremental
Tanto push quanto sync movem um diretório para outra máquina e ambos são seguros para rodar repetidamente, mas resolvem problemas de backup um pouco diferentes.
O push faz uma cópia pontual com daemon direto, segura contra colisões, e recusa um destino existente em vez de sobrescrever ou retomar — por isso não serve para uma tarefa repetida apontada para um diretório de recebimento fixo. Já o sync mantém um destino como espelho incremental de mão única da origem: arquivos inalterados são pulados, os alterados são enviados e um arquivo parcial continua na próxima execução. Por ser um espelho, ele reflete o estado atual e não o histórico: apagar ou corromper um arquivo na origem pode ser propagado.
- Use push para um destino com data quando quiser que cada execução seja independente e que as cópias anteriores sobrevivam.
- Use sync para um diretório grande ou que muda com frequência, onde reenviar tudo toda noite seria desperdício.
- Ambos verificam cada arquivo transferido com SHA-256. O push não retoma; o sync continua um arquivo parcial em uma execução posterior.
Antes de começar
Tudo abaixo é a CLI do relayium, então instale-a primeiro se ainda não tiver. No macOS ou Linux, um comando coloca um binário pré-compilado no seu PATH:
curl -fsSL https://relayium.com/install.sh | sh
- Prefere escolher o arquivo você mesmo, ou está no Windows? Pegue um binário na página de releases — relayium.com/cli lista todas as opções de instalação (ou go build ./cmd/relayium se você tiver Go).
- relayium --version confirma que está instalada. Pule isso e os comandos abaixo só imprimirão “command not found”.
Um só transporte: daemon-direct
Aponte qualquer um dos dois comandos para um destino relayium:// cuja máquina de destino rode relayium serve. Destinos SSH foram descontinuados.
# daemon-direct: o destino roda "relayium serve"
relayium push ./data relayium://backup-server:9031
- As conexões daemon-direct usam TLS 1.3 fixado com confiança no primeiro uso e, depois, são verificadas contra essa mesma impressão digital em todas as execuções seguintes.
- O sync aceita a mesma forma de destino relayium:// que o push.
Agende com o cron
O que você precisa antes do passo 1
- A CLI nas duas máquinas, com relayium serve rodando no destino.
- Um destino rodando relayium serve com este remetente pré-autorizado. O cron não tem terminal, então uma impressão digital desconhecida é recusada em vez de gerar uma pergunta.
- Um diretório de origem que exista no momento em que o cron dispara — não um em montagem de rede que só está presente enquanto você está logado.
- Um lugar para escrever um log. Uma tarefa de cron cuja saída não vai a lugar nenhum é um backup do qual você vai saber no dia em que precisar dele.
Com o remetente pré-autorizado, o sync é um único comando não interativo que entra direto no crontab. Registre a saída em log para que as falhas fiquem visíveis:
# espelho incremental a cada 15 minutos
*/15 * * * * relayium sync ~/documents relayium://backup-server:9031 >> ~/relayium-sync.log 2>&1
Descubra onde o relayium realmente está. O cron não usa o PATH do seu shell, e o install.sh recorre a ~/.local/bin quando não consegue escrever em /usr/local/bin — exatamente o lugar que o cron nunca enxerga.
command -v relayiumConfirme que o receptor está acessível e que este remetente já foi autorizado.
relayium idRode o comando inteiro à mão uma vez, escrito exatamente como o cron vai rodar, caminho absoluto incluído.
/usr/local/bin/relayium sync ~/documents relayium://backup-server:9031Só então adicione o agendamento. Mantenha o caminho absoluto e o redirecionamento.
crontab -eDepois da primeira execução agendada, leia o log em vez de supor. É o passo que as pessoas pulam, e é o que teria contado.
tail -n 20 ~/relayium-backup.log
Como é uma configuração que funciona
O relayium resolve para um caminho absoluto que você pode colar no crontab, e um sync com daemon direto rodado à mão termina com 0 sem pedir para autorizar um remetente desconhecido. Uma cópia que só funciona depois de uma aprovação interativa ainda não está agendada.
$ command -v relayium
/usr/local/bin/relayium
$ /usr/local/bin/relayium sync ~/documents relayium://backup-server:9031
$ echo $?
0- O comando termina com código diferente de zero se algum arquivo falhar na verificação de integridade, então o aviso por e-mail em caso de falha do cron detecta os problemas.
- Um sync interrompido se atualiza na próxima execução agendada: o que já corresponde é pulado e um arquivo parcial continua.
Espelhar exclusões e sincronização em tempo real
Por padrão, o sync apenas adiciona ou atualiza arquivos no destino. Adicione --delete para torná-lo um espelho de verdade, que também remove os arquivos que a origem não tem mais — o lado receptor precisa estar escutando explicitamente com serve --allow-delete, ou as exclusões são silenciosamente ignoradas e reportadas de volta como negadas. O sync também recusa --delete de imediato se o diretório de origem não resolver em nenhum arquivo, de modo que um erro de digitação no caminho de origem não pode apagar o destino.
Se você preferir não esperar o próximo ciclo do cron, --watch mantém o relayium sync em execução e sincroniza novamente de forma automática logo após qualquer arquivo sob a origem mudar — uma alternativa leve à sondagem agendada.
- relayium sync ./data relayium://backup-server:9031 --delete espelha as exclusões (o receptor precisa de serve --allow-delete).
- relayium sync ./data relayium://backup-server:9031 --watch permanece em execução e sincroniza novamente a cada mudança, em vez de rodar uma única vez pelo cron.
Quando não funciona
Cada um destes casos é invisível até você olhar o log — por isso o redirecionamento está na linha do crontab e não é opcional. O quinto é pior que invisível: ele parece sucesso.
Sintoma, checagem, correção
- O log diz relayium: command not found, mas o mesmo comando funciona no seu shell.
tail -n 5 ~/relayium-backup.log # /bin/sh: relayium: command not foundO cron roda com um PATH mínimo, normalmente só /usr/bin:/bin. Se o install.sh não conseguiu escrever em /usr/local/bin, o binário está em ~/.local/bin, onde o cron nunca vai procurar. Use na linha do crontab o caminho absoluto que o command -v mostra, ou coloque uma linha PATH= no topo do crontab.
- O log mostra “SSH transfers are currently disabled”, ou nada depois da primeira execução.
grep -i "SSH transfers" ~/relayium-sync.log # SSH transfers are currently disabled. Use relayium pair, or relayium serve with push/sync to relayium://host.O comando agendado ainda aponta para um destino SSH antigo, e as transferências por SSH foram descontinuadas. Rode relayium serve no servidor de backup, autorize lá a impressão digital do relayium id desta máquina e mude o alvo para relayium://backup-server — chave SSH, agente e frase-senha não entram mais na história.
- O sync roda limpo, mas os arquivos apagados na origem continuam no destino.
grep -i deni ~/relayium-sync.logA exclusão é uma opção do lado receptor. Sem serve --allow-delete do outro lado, as exclusões são puladas e reportadas como negadas — por isso a resposta está no log e não no código de saída. Reinicie o receptor do outro lado com --allow-delete.
- O sync recusa o --delete de saída.
relayium sync ~/documents relayium://backup-server:9031 --delete # refusing --delete with an empty source: this would delete everything on the destination. Check the path(s).A origem não resolveu nenhum arquivo, então o espelho teria esvaziado o destino. Essa recusa é proposital. Verifique o caminho por causa de um erro de digitação, e verifique se o que deveria estar montado ali está montado na hora em que o cron dispara, e não só quando você está logado.
- O backup roda, sai com 0, e não é o que você pensa.
ssh user@backup-server command -v relayiumO push e o sync atuais exigem um receptor do Relayium. Instale a CLI no destino, inicie o serve, autorize o remetente e use um alvo relayium://; não existe transporte alternativo silencioso.
Perguntas frequentes
O servidor de backup precisa do relayium instalado?
Sim. O push e o sync atuais usam o protocolo nativo daemon direto e exigem relayium serve no destino. Não há alternativa com SSH nem com tar.
O backup é criptografado e verificado?
Sim durante a transferência, e cada arquivo transferido é conferido com SHA-256. O sync decide o que enviar por tamanho e data de modificação, então um arquivo pulado não é re-hasheado. Tamanhos de diretório iguais são uma checagem de sanidade, não prova de que o conteúdo pulado ainda corresponde.
O que acontece se a tarefa cron for interrompida no meio?
Depende de qual comando você agendou. O sync continua: a próxima execução pula o que já corresponde e leva adiante um arquivo parcial, e o --no-resume desliga isso. O push não retoma — ele recusa um destino que já existe; para execuções repetidas, agende o sync ou faça push para um destino novo a cada execução. O --no-resume é aceito pelo push e não faz nada.
O --delete pode apagar meu destino por acidente?
O sync se recusa a rodar com --delete se o diretório de origem não contiver nenhum arquivo, e o receptor precisa ser iniciado com serve --allow-delete para que as exclusões tenham efeito — caso contrário, elas são ignoradas e reportadas a você.
Preciso de uma conta ou isso custa alguma coisa?
Não. A CLI é gratuita e push/sync com daemon direto não precisa de conta do Relayium nem de pagamento por transferência.
Coloque seus backups em um cronograma que você não precisa lembrar — criptografados em trânsito, verificados por arquivo e gratuitos.
Obter a CLI