Relayium

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
  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 relayium
  2. Confirme que o receptor está acessível e que este remetente já foi autorizado.

    relayium id
  3. Rode 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:9031
  4. Só então adicione o agendamento. Mantenha o caminho absoluto e o redirecionamento.

    crontab -e
  5. Depois 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 found

O 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.log

A 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 relayium

O 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

Continue lendo