--- title: "Rclone avanzado en Ubuntu 24.04: cifrado, filtros y systemd" description: "Configura rclone en Ubuntu 24.04 con un remoto S3 cifrado, filtros, límite de ancho de banda, versiones de archivos, montaje FUSE y copias con systemd." category: "Almacenamiento y Copia de Seguridad Avanzada" language: es source: https://cubepath.com/es/docs/almacenamiento-y-copia-de-seguridad-avanzada/configuracion-avanzada-de-sincronizacion-en-la-nube-de-rclone updated: 2026-09-25 --- # Rclone avanzado en Ubuntu 24.04: cifrado, filtros y systemd Rclone es una herramienta de línea de comandos para copiar y sincronizar archivos con más de 70 servicios de almacenamiento: Amazon S3 y compatibles, Backblaze B2, Google Drive, SFTP y muchos más. Además de `copy` y `sync`, permite cifrar los datos antes de subirlos, filtrar qué se envía, limitar el ancho de banda por franjas horarias y montar un remoto como si fuera un disco. En este tutorial montarás en Ubuntu 24.04 una copia de seguridad cifrada de `/var/www` hacia un bucket S3, conservando las versiones de los archivos modificados o borrados, programada con un temporizador de systemd y con un montaje de solo lectura para explorar la copia. ## 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 servicio compatible con S3 y unas claves de acceso (Access Key ID y Secret Access Key) con permiso de lectura, escritura, listado y borrado sobre él. - Los datos que quieras respaldar. En los ejemplos se usa `/var/www`; cámbialo por tu ruta. Todos los comandos de rclone de esta guía se ejecutan con `sudo`, porque la copia la hará un servicio de root que necesita leer cualquier archivo. La configuración quedará en `/root/.config/rclone/rclone.conf`. ## Paso 1: Instalar rclone desde el paquete oficial Ubuntu 24.04 incluye rclone 1.60, una versión de 2022. Instala el paquete `.deb` oficial para tener la versión actual (usa `linux-arm64` en servidores ARM): ```bash cd /tmp curl -fsSLO https://downloads.rclone.org/rclone-current-linux-amd64.deb sudo apt install ./rclone-current-linux-amd64.deb ``` Comprueba la versión: ```bash rclone version | head -n 1 ``` ```output rclone v1.75.1 ``` Para actualizar en el futuro, repite la descarga y la instalación del paquete. ## Paso 2: Crear el remoto S3 Un remoto es una conexión con nombre a un servicio de almacenamiento. Crea uno llamado `s3backup`. Para Amazon S3: ```bash sudo rclone config create s3backup s3 provider=AWS env_auth=false access_key_id=YOUR_ACCESS_KEY secret_access_key=YOUR_SECRET_KEY region=eu-west-1 no_check_bucket=true ``` Para otro proveedor compatible con S3, usa `provider=Other` e indica su endpoint: ```bash sudo rclone config create s3backup s3 provider=Other env_auth=false access_key_id=YOUR_ACCESS_KEY secret_access_key=YOUR_SECRET_KEY endpoint=https://s3.your_provider.com no_check_bucket=true ``` `no_check_bucket=true` evita que rclone intente crear el bucket en cada operación, algo necesario cuando las claves solo tienen permisos sobre un bucket existente. > Consejo: las claves quedan en el historial de la shell. En Ubuntu, si empiezas el comando con un espacio no se guarda, porque `HISTCONTROL` incluye `ignorespace` por defecto. También puedes usar el asistente interactivo `sudo rclone config`. Verifica que el remoto funciona listando el contenido del bucket: ```bash sudo rclone lsd s3backup:your_bucket ``` Si el bucket está vacío el comando no imprime nada y termina sin error. Un error `AccessDenied` o `SignatureDoesNotMatch` indica claves, región o endpoint incorrectos. ## Paso 3: Añadir una capa de cifrado con crypt El backend `crypt` envuelve otro remoto y cifra contenido y nombres de archivo en el servidor antes de subirlos. El proveedor solo ve datos ilegibles. Créalo con el asistente interactivo, que puede generar contraseñas aleatorias: ```bash sudo rclone config ``` Responde así a las preguntas principales: 1. `n` para crear un remoto nuevo y ponle de nombre `cifrado`. 2. En el tipo de almacenamiento, escribe `crypt`. 3. En `remote`, indica la ruta que envolverá: `s3backup:your_bucket/cifrado`. 4. En `filename_encryption`, elige `standard` (cifra los nombres de archivo). 5. En `directory_name_encryption`, elige `true`. 6. Para la contraseña, elige `g` para generar una aleatoria y acepta la propuesta. Repite para la segunda contraseña (salt). 7. Revisa el resumen, confirma con `y` y sal con `q`. > Advertencia: anota las dos contraseñas que muestra el asistente en un gestor de contraseñas fuera del servidor. En `rclone.conf` quedan ofuscadas, no cifradas, y si pierdes el servidor y no las tienes, los datos del bucket son irrecuperables. Protege el archivo de configuración y comprueba cómo ha quedado: ```bash sudo chmod 600 /root/.config/rclone/rclone.conf sudo rclone config redacted cifrado ``` ```output [cifrado] type = crypt remote = s3backup:your_bucket/cifrado filename_encryption = standard directory_name_encryption = true password = XXX password2 = XXX ``` Haz una prueba de ida y vuelta: ```bash echo "prueba de cifrado" | sudo rclone rcat cifrado:prueba.txt sudo rclone cat cifrado:prueba.txt sudo rclone ls s3backup:your_bucket/cifrado ``` ```output prueba de cifrado 66 d0q6hl1v3ai7ao3hd2l5tq1ok8 ``` A través de `cifrado:` ves el archivo en claro; a través de `s3backup:` solo un nombre cifrado. Borra la prueba con `sudo rclone deletefile cifrado:prueba.txt`. ## Paso 4: Definir filtros Los filtros evitan subir archivos que no hacen falta al restaurar. Crea un archivo de reglas: ```bash sudo mkdir -p /etc/rclone sudo nano /etc/rclone/backup-filters.txt ``` ```text # Excluir temporales y dependencias que se pueden regenerar - *.tmp - *.swp - .cache/** - node_modules/** - vendor/** ``` Cada línea que empieza por `-` excluye lo que coincide; lo que no coincide con ninguna regla se incluye. Comprueba qué se copiaría sin transferir nada: ```bash sudo rclone ls /var/www --filter-from /etc/rclone/backup-filters.txt | head ``` ## Paso 5: Sincronizar conservando versiones `rclone sync` hace que el destino sea idéntico al origen, lo que incluye borrar en el destino lo que se borró en origen. Para que un borrado accidental no se propague a la copia, usa `--backup-dir`: los archivos que `sync` borraría o sobrescribiría se mueven a otra carpeta en lugar de perderse. Haz primero una simulación con `--dry-run`: ```bash sudo rclone sync /var/www cifrado:www/current \ --backup-dir cifrado:www/archive/$(date +%F_%H%M) \ --filter-from /etc/rclone/backup-filters.txt \ --dry-run ``` Si la lista de operaciones es la esperada, ejecútalo de verdad con estadísticas de progreso: ```bash sudo rclone sync /var/www cifrado:www/current \ --backup-dir cifrado:www/archive/$(date +%F_%H%M) \ --filter-from /etc/rclone/backup-filters.txt \ --transfers 8 \ --progress ``` `--transfers 8` sube ocho archivos en paralelo (el valor por defecto es 4), útil con muchos archivos pequeños. Verifica que la copia coincide con el origen. Con remotos cifrados se usa `cryptcheck`, que compara sumas de comprobación a través del cifrado: ```bash sudo rclone cryptcheck /var/www cifrado:www/current --filter-from /etc/rclone/backup-filters.txt ``` ```output NOTICE: Encrypted drive 'cifrado:www/current': 0 differences found NOTICE: Encrypted drive 'cifrado:www/current': 1532 matching files ``` ## Paso 6: Automatizar con un temporizador de systemd Crea un script que encapsule la sincronización, la limpieza de versiones antiguas y el límite de ancho de banda: ```bash sudo nano /usr/local/sbin/rclone-backup.sh ``` ```bash #!/usr/bin/env bash set -euo pipefail SRC="/var/www" DEST="cifrado:www/current" ARCHIVE_ROOT="cifrado:www/archive" STAMP="$(date +%F_%H%M)" rclone sync "$SRC" "$DEST" \ --backup-dir "${ARCHIVE_ROOT}/${STAMP}" \ --filter-from /etc/rclone/backup-filters.txt \ --transfers 8 \ --bwlimit "08:00,20M 23:00,off" \ --log-level INFO \ --stats-one-line \ --stats 5m # Eliminar versiones archivadas de más de 90 días y las carpetas vacías rclone delete "$ARCHIVE_ROOT" --min-age 90d rclone rmdirs "$ARCHIVE_ROOT" --leave-root ``` `--bwlimit "08:00,20M 23:00,off"` limita la subida a 20 MB/s entre las 08:00 y las 23:00 y la deja libre por la noche. Hazlo ejecutable: ```bash sudo chmod 750 /usr/local/sbin/rclone-backup.sh ``` Crea el servicio: ```bash sudo nano /etc/systemd/system/rclone-backup.service ``` ```ini [Unit] Description=Copia cifrada de /var/www con rclone Wants=network-online.target After=network-online.target [Service] Type=oneshot Environment=RCLONE_CONFIG=/root/.config/rclone/rclone.conf ExecStart=/usr/local/sbin/rclone-backup.sh Nice=10 IOSchedulingClass=idle ``` `RCLONE_CONFIG` indica de forma explícita dónde está la configuración, para no depender de que el servicio tenga definida la variable `HOME`. Y el temporizador que lo lanza cada noche: ```bash sudo nano /etc/systemd/system/rclone-backup.timer ``` ```ini [Unit] Description=Copia diaria con rclone [Timer] OnCalendar=*-*-* 02:30:00 RandomizedDelaySec=15m Persistent=true [Install] WantedBy=timers.target ``` `Persistent=true` ejecuta la copia al arrancar si el servidor estaba apagado a la hora programada. Activa el temporizador y lanza una ejecución manual para probar: ```bash sudo systemctl daemon-reload sudo systemctl enable --now rclone-backup.timer sudo systemctl start rclone-backup.service ``` Comprueba el resultado y la próxima ejecución: ```bash sudo journalctl -u rclone-backup.service -n 20 --no-pager systemctl list-timers rclone-backup.timer ``` ```output NEXT LEFT LAST PASSED UNIT ACTIVATES Fri 2026-09-26 02:38:12 UTC 11h left - - rclone-backup.timer rclone-backup.service ``` Como rclone escribe su registro en la salida de error, todo queda en el journal sin necesidad de archivos de log ni rotación. ## Paso 7: Montar la copia en solo lectura Montar el remoto permite navegar por la copia con herramientas normales (`ls`, `less`, `diff`) sin descargarla entera. Instala FUSE 3 y crea el punto de montaje: ```bash sudo apt install fuse3 sudo mkdir -p /mnt/backup-www ``` Crea una unidad de systemd para el montaje: ```bash sudo nano /etc/systemd/system/rclone-mount-www.service ``` ```ini [Unit] Description=Montaje de solo lectura de la copia rclone Wants=network-online.target After=network-online.target [Service] Type=notify Environment=RCLONE_CONFIG=/root/.config/rclone/rclone.conf ExecStart=/usr/bin/rclone mount cifrado:www /mnt/backup-www --read-only --vfs-cache-mode minimal --dir-cache-time 1h ExecStop=/usr/bin/fusermount3 -u /mnt/backup-www Restart=on-failure [Install] WantedBy=multi-user.target ``` `rclone mount` avisa a systemd cuando el montaje está listo, por eso se usa `Type=notify`. Arráncalo y compruébalo: ```bash sudo systemctl daemon-reload sudo systemctl enable --now rclone-mount-www.service sudo ls /mnt/backup-www ``` ```output archive current ``` Solo root puede ver el contenido, porque el montaje no usa `--allow-other`. Es lo adecuado para una copia de seguridad. ## Paso 8: Restaurar archivos Para recuperar un archivo o un directorio de la última copia, usa `rclone copy` hacia una ruta temporal: ```bash sudo rclone copy cifrado:www/current/your_site /tmp/restore/your_site --progress ``` Para recuperar una versión anterior de un archivo que se modificó o borró, búscala en las carpetas de `archive`: ```bash sudo rclone ls cifrado:www/archive --include "**/wp-config.php" ``` ```output 3271 2026-09-24_0231/your_site/wp-config.php ``` Y cópiala: ```bash sudo rclone copy cifrado:www/archive/2026-09-24_0231/your_site/wp-config.php /tmp/restore/ ``` Revisa lo recuperado antes de moverlo a su ubicación final. ## Solución de problemas **`directory not found` en el primer `sync`.** Es normal que el destino no exista la primera vez; rclone lo crea. Si el error se refiere al origen, revisa la ruta local. **`Failed to create file system ... AccessDenied`.** Las claves no tienen permiso sobre el bucket o la ruta, o falta `no_check_bucket=true` y las claves no pueden crear buckets. Revisa con `sudo rclone config redacted s3backup`. **El montaje falla porque no encuentra `fusermount3`.** Falta el paquete `fuse3`. Instálalo y reinicia la unidad con `sudo systemctl restart rclone-mount-www`. **`--backup-dir` falla por solapamiento.** La carpeta de versiones no puede estar dentro del destino del `sync`. Por eso en esta guía el destino es `www/current` y las versiones van a `www/archive`. ## Conclusión Tienes rclone actualizado en Ubuntu 24.04 con un remoto S3 cifrado, una sincronización diaria con filtros y límite de ancho de banda que conserva 90 días de versiones, verificación con `cryptcheck` y un montaje de solo lectura para restaurar con comodidad. Como siguientes pasos, puedes añadir un segundo remoto en otro proveedor y replicar la copia con `rclone sync cifrado: otro_remoto:`, activar el bloqueo de objetos (Object Lock) en el bucket si tu proveedor lo ofrece, o añadir un `OnFailure=` al servicio para recibir un aviso cuando la copia falle.