Automatiza copias de seguridad cifradas del servidor con una tarea cron
Última actualización: 2026-09-01
Las copias de seguridad que tienes que acordarte de ejecutar no ocurren. cron sí se acuerda, y la CLI de Relayium está hecha para eso: un único comando no interactivo que copia (o replica) un directorio a otra máquina y verifica cada archivo que transfiere.
Esta guía cubre cómo programar relayium push y el relayium sync incremental desde cron, el transporte daemon directo que usan ambos, y las líneas de crontab para copiar.
push frente a sync: copia completa o réplica incremental
Tanto push como sync mueven un directorio a otra máquina y ambos son seguros de ejecutar repetidamente, pero resuelven problemas de copia de seguridad ligeramente distintos.
push hace una copia puntual con daemon directo, segura ante colisiones, y rechaza un destino existente en lugar de sobrescribirlo o reanudar; por eso no encaja en una tarea repetida hacia un directorio de recepción fijo. sync, en cambio, mantiene un destino como espejo incremental de un solo sentido del origen: se saltan los archivos sin cambios, se envían los modificados y un archivo parcial continúa en la siguiente ejecución. Como es un espejo, refleja el estado actual y no el histórico: borrar o corromper un archivo de origen puede propagarse.
- Usa push hacia un destino con fecha cuando quieras que cada ejecución sea independiente y que las copias anteriores se conserven.
- Usa sync para un directorio grande o que cambia con frecuencia, donde reenviar todo cada noche sería un desperdicio.
- Ambos verifican cada archivo transferido con SHA-256. push no reanuda; sync continúa un archivo parcial en una ejecución posterior.
Antes de empezar
Todo lo de abajo es la CLI de relayium, así que instálala primero si aún no la tienes. En macOS o Linux, un solo comando deja un binario precompilado en tu PATH:
curl -fsSL https://relayium.com/install.sh | sh
- ¿Prefieres elegir el archivo tú mismo, o estás en Windows? Coge un binario de la página de releases — relayium.com/cli lista todas las opciones de instalación (o go build ./cmd/relayium si tienes Go).
- relayium --version confirma que está instalada. Sáltate esto y los comandos de abajo solo imprimirán « command not found ».
Un solo transporte: daemon-direct
Apunta cualquiera de los dos comandos a un destino relayium:// cuya máquina receptora ejecute relayium serve. Los destinos SSH están retirados.
# daemon-direct: el destino ejecuta "relayium serve"
relayium push ./data relayium://backup-server:9031
- Las conexiones daemon-direct usan TLS 1.3 fijado con confianza en el primer uso, y luego se comprueban contra esa misma huella en cada ejecución posterior.
- sync acepta la misma forma de destino relayium:// que push.
Prográmalo con cron
Lo que necesitas antes del paso 1
- La CLI en las dos máquinas, con relayium serve en ejecución en el destino.
- Un destino que ejecute relayium serve y tenga preautorizado a este remitente. cron no tiene terminal, así que una huella desconocida se rechaza en lugar de preguntar.
- Un directorio de origen que exista en el momento en que cron se dispara, no uno en un montaje de red que solo está presente mientras tienes la sesión abierta.
- Un sitio donde escribir un registro. Una tarea de cron cuya salida no va a ninguna parte es una copia de seguridad de la que te enterarás el día que la necesites.
Con el remitente preautorizado, sync es un único comando no interactivo que entra directamente en un crontab. Registra la salida para que los fallos sean visibles:
# espejo incremental cada 15 minutos
*/15 * * * * relayium sync ~/documents relayium://backup-server:9031 >> ~/relayium-sync.log 2>&1
Averigua dónde está realmente relayium. cron no usa el PATH de tu shell, e install.sh se repliega a ~/.local/bin cuando no puede escribir en /usr/local/bin, que es justo el sitio que cron nunca ve.
command -v relayiumConfirma que el receptor es alcanzable y que este remitente ya fue autorizado.
relayium idEjecuta la orden entera a mano una vez, escrita exactamente como la ejecutará cron, ruta absoluta incluida.
/usr/local/bin/relayium sync ~/documents relayium://backup-server:9031Solo entonces añade la programación. Conserva la ruta absoluta y la redirección.
crontab -eTras la primera ejecución programada, lee el registro en vez de suponer. Es el paso que la gente se salta, y es el que se lo habría dicho.
tail -n 20 ~/relayium-backup.log
Qué aspecto tiene un montaje que funciona
relayium se resuelve a una ruta absoluta que puedes pegar en el crontab, y un sync con daemon directo ejecutado a mano termina con 0 sin pedir autorizar a un remitente desconocido. Una copia que solo funciona tras una aprobación interactiva todavía no está programada.
$ command -v relayium
/usr/local/bin/relayium
$ /usr/local/bin/relayium sync ~/documents relayium://backup-server:9031
$ echo $?
0- El comando termina con un código distinto de cero si algún archivo falla su comprobación de integridad, así que el aviso por correo de cron ante fallos detecta los problemas.
- Un sync interrumpido se pone al día en la siguiente ejecución programada: lo que ya coincide se salta y un archivo parcial continúa.
Replicar borrados y sincronización en tiempo real
De forma predeterminada, sync solo añade o actualiza archivos en el destino. Añade --delete para convertirlo en una réplica de verdad que también elimina los archivos que el origen ya no tiene: el lado receptor debe estar escuchando explícitamente con serve --allow-delete, o los borrados se omiten en silencio y se informan de vuelta como denegados. sync además rechaza --delete de plano si el directorio de origen no se resuelve en ningún archivo, de modo que un error de tecleo en la ruta de origen no puede vaciar el destino.
Si prefieres no esperar al siguiente tic de cron, --watch mantiene relayium sync en ejecución y vuelve a sincronizar automáticamente un instante después de que cambie cualquier archivo bajo el origen: una alternativa ligera al sondeo programado.
- relayium sync ./data relayium://backup-server:9031 --delete replica los borrados (el receptor necesita serve --allow-delete).
- relayium sync ./data relayium://backup-server:9031 --watch se mantiene en ejecución y vuelve a sincronizar al cambiar algo, en lugar de ejecutarse una sola vez desde cron.
Cuando no funciona
Todos estos casos son invisibles hasta que miras el registro: por eso la redirección va en la línea del crontab y no es opcional. El quinto es peor que invisible, porque parece un éxito.
Síntoma, comprobación, solución
- El registro dice relayium: command not found, pero la misma orden funciona en tu shell.
tail -n 5 ~/relayium-backup.log # /bin/sh: relayium: command not foundcron corre con un PATH mínimo, normalmente solo /usr/bin:/bin. Si install.sh no pudo escribir en /usr/local/bin, el binario está en ~/.local/bin, donde cron no mirará jamás. Pon en la línea del crontab la ruta absoluta que da command -v, o añade una línea PATH= al principio del crontab.
- El registro muestra «SSH transfers are currently disabled», o nada después de la primera ejecución.
grep -i "SSH transfers" ~/relayium-sync.log # SSH transfers are currently disabled. Use relayium pair, or relayium serve with push/sync to relayium://host.El comando programado todavía nombra un destino SSH antiguo, y las transferencias SSH están retiradas. Ejecuta relayium serve en el servidor de copias, autoriza allí la huella de relayium id de esta máquina y cambia el destino a relayium://backup-server: ya no intervienen clave SSH, agente ni frase de contraseña.
- sync se ejecuta limpiamente, pero los archivos borrados en el origen siguen en el destino.
grep -i deni ~/relayium-sync.logEl borrado se activa en el lado receptor. Sin serve --allow-delete enfrente, los borrados se omiten y se informan como denegados, y por eso la respuesta está en el registro y no en el código de salida. Reinicia el receptor del otro lado con --allow-delete.
- sync rechaza --delete de plano.
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).El origen no resolvió ningún archivo, así que el espejo habría vaciado el destino. Ese rechazo es deliberado. Revisa la ruta por si hay una errata, y comprueba que lo que deba estar montado ahí lo esté a la hora en que se dispara cron y no solo cuando tienes sesión abierta.
- La copia se ejecuta, termina con 0, y no es lo que crees.
ssh user@backup-server command -v relayiumpush y sync actuales requieren un receptor de Relayium. Instala la CLI en el destino, inicia serve, autoriza al remitente y usa un destino relayium://; no hay ningún transporte alternativo silencioso.
Preguntas frecuentes
¿El servidor de copias de seguridad necesita relayium instalado?
Sí. push y sync actuales usan el protocolo nativo daemon directo y requieren relayium serve en el receptor. No hay alternativa con SSH ni con tar.
¿La copia de seguridad va cifrada y verificada?
Sí durante la transferencia, y cada archivo transferido se comprueba con SHA-256. sync decide qué enviar por tamaño y fecha de modificación, así que un archivo saltado no se vuelve a hashear. Que coincidan los tamaños de directorio es una comprobación de cordura, no una prueba de que el contenido saltado siga coincidiendo.
¿Qué pasa si la tarea cron se interrumpe a mitad de camino?
Depende de qué comando hayas programado. sync continúa: la siguiente ejecución se salta lo que ya coincide y sigue con un archivo parcial, y --no-resume desactiva eso. push no reanuda: rechaza un destino que ya existe, así que para ejecuciones repetidas programa sync o haz push a un destino nuevo en cada ejecución. --no-resume se acepta en push y no hace nada.
¿Puede --delete vaciar mi destino por accidente?
sync se niega a ejecutarse con --delete si el directorio de origen no contiene ningún archivo, y el receptor tiene que iniciarse con serve --allow-delete para que los borrados surtan efecto siquiera; de lo contrario se omiten y se te informa de ello.
¿Necesito una cuenta o esto cuesta algo?
No. La CLI es gratis y push/sync con daemon directo no necesita cuenta de Relayium ni pago por transferencia.
Pon tus copias de seguridad en un calendario que no tienes que recordar: cifradas en tránsito, verificadas por archivo y gratis.
Obtener la CLI