--- title: "Cómo sincronizar archivos con rclone en Ubuntu 24.04" description: "Instala rclone en Ubuntu 24.04, conéctalo a un almacenamiento S3, sincroniza directorios de forma segura con cifrado opcional y automatiza la copia con systemd." category: "Recuperación de copias" language: es source: https://cubepath.com/es/docs/recuperación-de-copias/sincronizacion-de-archivos-con-rclone updated: 2026-09-25 --- # Cómo sincronizar archivos con rclone en Ubuntu 24.04 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: ```bash 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: ```bash rclone version ``` ```output 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: ```bash 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. > Nota: este 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: ```bash sudo rclone config file sudo chmod 600 /root/.config/rclone/rclone.conf ``` ```output Configuration file is stored at: /root/.config/rclone/rclone.conf ``` Verifica que rclone puede conectarse listando los buckets: ```bash sudo rclone lsd s3backup: ``` ```output -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: ```bash sudo rclone copy /etc s3backup:your_bucket/etc -P ``` Lista lo que se ha subido: ```bash sudo rclone ls s3backup:your_bucket/etc | head -5 ``` ```output 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: ```bash sudo rclone sync /var/www s3backup:your_bucket/www --dry-run ``` ```output 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: ```bash 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: ```bash 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: ```bash 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: ```bash 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. > Importante: guarda 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: ```bash sudo rclone copy /etc/hostname cifrado: sudo rclone ls cifrado: sudo rclone ls s3backup:your_bucket/cifrado ``` ```output 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: ```bash sudo rclone check /var/www s3backup:your_bucket/www --exclude '**/cache/**' --exclude '**/node_modules/**' --exclude '*.log' ``` ```output 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: ```bash 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: ```bash sudo nano /usr/local/sbin/rclone-backup.sh ``` ```bash #!/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 ``` ```bash 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: ```bash sudo nano /etc/systemd/system/rclone-backup.service ``` ```ini [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: ```bash sudo nano /etc/systemd/system/rclone-backup.timer ``` ```ini [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: ```bash 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 ``` ```output 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 - **`AccessDenied` o `SignatureDoesNotMatch`**: las claves o el endpoint son incorrectos, o la clave no tiene permisos sobre el bucket. Revisa el remoto con `sudo rclone config show s3backup`. - **`didn't find section in config file` al usar `sudo rclone`**: configuraste el remoto sin `sudo`, así que está en `~/.config/rclone/rclone.conf` de tu usuario y no en el de root. Crea el remoto de nuevo con `sudo` o 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 `--checksum` para comparar por hash en lugar de por fecha y tamaño. - **`sync` ha borrado archivos por error**: si usabas `--backup-dir`, recupéralos desde `archive//` con `rclone 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.