rclone es una herramienta de línea de comandos para copiar y sincronizar archivos con más de 70 servicios de almacenamiento: compatibles con S3, Google Drive, Backblaze B2, SFTP y muchos otros. Funciona como un rsync para la nube: compara archivos, transfiere solo lo que ha cambiado y puede cifrar los datos antes de enviarlos. En este tutorial instalarás rclone en Ubuntu 24.04, configurarás un remoto compatible con S3, sincronizarás un directorio sin riesgo de borrar datos por error y programarás la copia diaria con un temporizador de systemd.
Requisitos previos
- Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath.
- Un usuario no root con privilegios
sudo. - Un bucket en un almacenamiento de objetos compatible con S3 (AWS S3, Cloudflare R2, Wasabi, MinIO, etc.) con su endpoint, access key y secret key. Los ejemplos usan un bucket llamado
your_bucket.
Esta guía ejecuta rclone con sudo, porque las copias leerán directorios del sistema como /var/www o /etc. La configuración se guardará por tanto en /root/.config/rclone/rclone.conf.
Paso 1: Instalar rclone
Ubuntu 24.04 incluye rclone en sus repositorios, pero es una versión antigua. El proyecto publica un script de instalación que descarga el binario oficial más reciente. Descárgalo y revísalo antes de ejecutarlo:
sudo apt update
sudo apt install curl unzip
curl -fsSL https://rclone.org/install.sh -o rclone-install.sh
less rclone-install.sh
sudo bash rclone-install.sh
El script instala el binario en /usr/bin/rclone y la página de manual. Comprueba la versión:
rclone version
rclone v1.71.1
- os/version: ubuntu 24.04 (64 bit)
- os/kernel: 6.8.0-45-generic (x86_64)
- os/type: linux
- os/arch: amd64
...
Para actualizar más adelante, basta con sudo rclone selfupdate.
Paso 2: Configurar un remoto S3
Un remoto es una conexión con nombre a un servicio de almacenamiento. Puedes crearlo con el asistente interactivo (sudo rclone config) o en un solo comando con rclone config create. Para un almacenamiento compatible con S3 genérico:
sudo rclone config create s3backup s3 \
provider=Other \
endpoint=https://your_s3_endpoint \
access_key_id=your_access_key \
secret_access_key=your_secret_key \
acl=private
Sustituye your_s3_endpoint, your_access_key y your_secret_key por los datos de tu proveedor. Si usas AWS, cambia provider=Other por provider=AWS, elimina endpoint y añade region=eu-west-1 (o tu región). rclone también tiene valores específicos como provider=Cloudflare, provider=Wasabi o provider=Minio; sudo rclone config los muestra todos.
Notaeste comando deja las claves en el historial de la shell. Si lo prefieres, usa el asistente
sudo rclone config, que las pide de forma interactiva.
Protege el archivo de configuración, ya que contiene las credenciales:
sudo rclone config file
sudo chmod 600 /root/.config/rclone/rclone.conf
Configuration file is stored at:
/root/.config/rclone/rclone.conf
Verifica que rclone puede conectarse listando los buckets:
sudo rclone lsd s3backup:
-1 2026-09-20 11:02:31 -1 your_bucket
Si el bucket todavía no existe y tus credenciales permiten crearlo, usa sudo rclone mkdir s3backup:your_bucket.
Paso 3: Copiar y sincronizar archivos
rclone tiene dos comandos principales que conviene no confundir:
| Comando | Qué hace | Borra en el destino |
|---|---|---|
rclone copy | Copia archivos nuevos o modificados | No |
rclone sync | Deja el destino idéntico al origen | Sí, lo que no está en el origen |
Empieza con copy, que nunca elimina nada. La opción -P muestra el progreso:
sudo rclone copy /etc s3backup:your_bucket/etc -P
Lista lo que se ha subido:
sudo rclone ls s3backup:your_bucket/etc | head -5
1958 adduser.conf
551 fstab
3444 ssh/sshd_config
...
Antes de usar sync por primera vez, simula siempre la operación con --dry-run. Un error en el origen (un directorio vacío o mal escrito) provocaría el borrado de todo el destino:
sudo rclone sync /var/www s3backup:your_bucket/www --dry-run
2026/09/25 10:30:12 NOTICE: html/index.html: Skipped copy as --dry-run is set (size 10.671Ki)
2026/09/25 10:30:12 NOTICE: html/old.php: Skipped delete as --dry-run is set (size 2.104Ki)
Si el resultado es el esperado, ejecútalo de verdad. Con --backup-dir, los archivos que sync eliminaría o sobrescribiría se mueven a otra ruta del bucket en lugar de perderse, lo que te da un historial sencillo:
sudo rclone sync /var/www s3backup:your_bucket/www \
--backup-dir s3backup:your_bucket/archive/$(date +%F) -P
La ruta de --backup-dir debe estar en el mismo remoto y fuera del directorio de destino.
Paso 4: Filtrar archivos y limitar el ancho de banda
Excluye lo que no necesitas guardar con --exclude. Los patrones son relativos al directorio de origen y ** coincide con cualquier número de niveles:
sudo rclone sync /var/www s3backup:your_bucket/www \
--exclude '**/cache/**' \
--exclude '**/node_modules/**' \
--exclude '*.log' \
--dry-run
Si tienes muchas reglas, guárdalas en un archivo (una por línea) y pásalo con --exclude-from /etc/rclone-exclude.txt.
Para no saturar la conexión del servidor en horario laboral, limita el ancho de banda con --bwlimit. Este ejemplo limita a 10 MiB/s durante el día y quita el límite por la noche:
sudo rclone sync /var/www s3backup:your_bucket/www --bwlimit "08:00,10M 23:00,off"
Con muchos archivos pequeños, subir el número de transferencias en paralelo (--transfers 8, por defecto 4) acelera la sincronización.
Paso 5: Cifrar los datos antes de subirlos (opcional)
El remoto crypt envuelve otro remoto y cifra el contenido y los nombres de archivo en tu servidor, de modo que el proveedor solo ve datos cifrados. Créalo con el asistente:
sudo rclone config
Elige n (nuevo remoto), llámalo cifrado, selecciona el tipo crypt y, cuando pregunte por el remoto a envolver, escribe s3backup:your_bucket/cifrado. Acepta el cifrado de nombres por defecto (standard) y deja que rclone genere una contraseña y una sal aleatorias o introduce las tuyas.
Importanteguarda la contraseña y la sal fuera del servidor, por ejemplo en un gestor de contraseñas. Sin ellas los datos cifrados son irrecuperables, y si pierdes el servidor pierdes también
rclone.conf.
Sube una prueba a través del remoto cifrado y compara cómo se ve desde cada lado:
sudo rclone copy /etc/hostname cifrado:
sudo rclone ls cifrado:
sudo rclone ls s3backup:your_bucket/cifrado
12 hostname
60 q8l1v0kf4oa3b5l7d2iat6ckcg
A través de cifrado: ves el archivo original; en el bucket solo existe un nombre y contenido cifrados.
Paso 6: Verificar la copia
rclone check compara origen y destino por tamaño y hash, sin transferir nada:
sudo rclone check /var/www s3backup:your_bucket/www --exclude '**/cache/**' --exclude '**/node_modules/**' --exclude '*.log'
2026/09/25 10:41:03 NOTICE: S3 bucket your_bucket path www: 0 differences found
2026/09/25 10:41:03 NOTICE: S3 bucket your_bucket path www: 1532 matching files
Usa los mismos filtros que en la sincronización para que los archivos excluidos no aparezcan como diferencias. En remotos crypt, usa rclone cryptcheck en lugar de check, porque los hashes del proveedor corresponden al contenido cifrado.
Para restaurar, invierte origen y destino, primero en un directorio temporal:
sudo rclone copy s3backup:your_bucket/www /srv/restore/www -P
Paso 7: Automatizar la sincronización con systemd
Crea un script pequeño para la copia, de modo que la fecha de --backup-dir y los filtros vivan en un único sitio:
sudo nano /usr/local/sbin/rclone-backup.sh
#!/usr/bin/env bash
set -euo pipefail
REMOTE="s3backup:your_bucket"
STAMP="$(date +%F)"
rclone sync /var/www "${REMOTE}/www" \
--backup-dir "${REMOTE}/archive/${STAMP}/www" \
--exclude '**/cache/**' \
--exclude '**/node_modules/**' \
--exclude '*.log' \
--log-level INFO
rclone sync /etc "${REMOTE}/etc" \
--backup-dir "${REMOTE}/archive/${STAMP}/etc" \
--log-level INFO
sudo chmod 750 /usr/local/sbin/rclone-backup.sh
sudo /usr/local/sbin/rclone-backup.sh
Crea el servicio. La salida de rclone va al journal, así que no necesitas un archivo de log aparte:
sudo nano /etc/systemd/system/rclone-backup.service
[Unit]
Description=Sincronización de copias con rclone
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/rclone-backup.sh
Nice=10
IOSchedulingClass=idle
Y el temporizador diario a las 02:30:
sudo nano /etc/systemd/system/rclone-backup.timer
[Unit]
Description=Ejecuta rclone-backup cada noche
[Timer]
OnCalendar=*-*-* 02:30:00
RandomizedDelaySec=15m
Persistent=true
[Install]
WantedBy=timers.target
Actívalo y lanza una ejecución de prueba:
sudo systemctl daemon-reload
sudo systemctl enable --now rclone-backup.timer
sudo systemctl start rclone-backup.service
journalctl -u rclone-backup.service -n 20 --no-pager
Sep 25 10:52:40 web01 rclone-backup.sh[4121]: 2026/09/25 10:52:40 INFO : html/index.html: Copied (replaced existing)
Sep 25 10:52:43 web01 systemd[1]: rclone-backup.service: Deactivated successfully.
Comprueba la próxima ejecución con systemctl list-timers rclone-backup.timer. Si el servicio falla, systemctl status rclone-backup.service mostrará failed y el journal indicará el motivo.
El directorio archive/ crecerá con el tiempo. La forma más sencilla de limpiarlo es una regla de ciclo de vida en el bucket de tu proveedor (por ejemplo, borrar objetos con prefijo archive/ tras 30 días). También puedes hacerlo con rclone: sudo rclone delete s3backup:your_bucket/archive --min-age 30d --rmdirs.
Solución de problemas
AccessDeniedoSignatureDoesNotMatch: las claves o el endpoint son incorrectos, o la clave no tiene permisos sobre el bucket. Revisa el remoto consudo rclone config show s3backup.didn't find section in config fileal usarsudo rclone: configuraste el remoto sinsudo, así que está en~/.config/rclone/rclone.confde tu usuario y no en el de root. Crea el remoto de nuevo consudoo pasa--config /ruta/rclone.conf.- La sincronización vuelve a subir todo cada vez: algunos proveedores no conservan la fecha de modificación. Prueba con
--checksumpara comparar por hash en lugar de por fecha y tamaño. syncha borrado archivos por error: si usabas--backup-dir, recupéralos desdearchive/<fecha>/conrclone copy.
Conclusión
Tienes rclone conectado a un almacenamiento S3, una sincronización diaria de /var/www y /etc que conserva los archivos borrados o sobrescritos, y la opción de cifrarlo todo antes de que salga del servidor. Como siguientes pasos, combina rclone con copias locales en .tar.gz o volcados de base de datos, añade un segundo remoto en otro proveedor y prueba periódicamente la restauración de los datos.
