Rclone: rsync para almacenamiento en la nube

Publicado por


rclone
Sincronización Cloud

Rclone: rsync para almacenamiento en la nube

Sincroniza archivos y directorios con más de 70 proveedores de almacenamiento en la nube desde la línea de comandos

Vídeo tutorial en YouTube

Mira el vídeo completo sobre cómo instalar y usar Rclone: rsync para almacenamiento en la nube en el canal GENBYTE:

¿Qué es Rclone: rsync para almacenamiento en la nube?

Rclone es un programa de línea de comandos diseñado para gestionar la transferencia y sincronización de archivos entre almacenamiento local y una amplia variedad de proveedores cloud. Conocido como "rsync para cloud storage", soporta más de 70 backends incluyendo Google Drive, Amazon S3, Dropbox, OneDrive, Backblaze B2, Azure Blob, Wasabi y muchos otros compatibles con S3, WebDAV, SFTP y FTP. Escrito en Go y licenciado bajo MIT, ofrece verificación de integridad mediante hash MD5/SHA-1, preservación de timestamps, sincronización unidireccional y bidireccional, cifrado transparente, compresión, fragmentación de archivos grandes y montaje FUSE para acceder a remotos como sistemas de archivos locales.

Más de 70 proveedores cloud soportados con cifrado, compresión y montaje FUSE integrados en un solo binario multiplataforma

Características principales

Amplia compatibilidad de proveedores

Soporta más de 70 backends de almacenamiento: Google Drive, Amazon S3, Dropbox, OneDrive, Backblaze B2, Azure Blob/Files, Wasabi, DigitalOcean Spaces, MinIO, y cualquier servicio compatible con S3, WebDAV, SFTP, FTP, Swift u HTTP.

Modos de sincronización flexibles

Incluye copy (copia solo archivos nuevos/cambiados), sync (unidireccional para hacer directorios idénticos), bisync (bidireccional para mantener dos directorios sincronizados) y check (verifica igualdad mediante hash).

Integridad y metadatos

Verifica MD5/SHA-1 en todo momento para garantizar integridad de datos. Preserva timestamps en archivos y soporta sincronización parcial a nivel de archivo completo.

Cifrado transparente (Crypt)

Backend virtual Crypt que cifra archivos y nombres de archivo en el lado del cliente antes de subirlos, compatible con cualquier proveedor remoto.

Compresión y fragmentación

Backend Compress para compresión transparente y Chunker para dividir archivos grandes en fragmentos, útiles para límites de tamaño en proveedores.

Montaje FUSE y servidor integrado

Permite montar remotos como sistema de archivos local (rclone mount) y servir archivos locales o remotos vía HTTP, WebDAV, FTP, SFTP o DLNA (rclone serve).

Proveedores virtuales avanzados

Incluye Alias (renombrar remotos), Archive (leer archivos comprimidos), Combine (unir remotos en árbol), Hasher (hash de archivos), Union (unir remotos para trabajo conjunto) y Cache (obsoleto).

Multi-hilo y rendimiento

Descargas multi-hilo a disco local para maximizar ancho de banda. Binario único sin dependencias externas, compilado estáticamente.

Requisitos del sistema

  • Sistema operativo Linux, macOS, Windows, FreeBSD, NetBSD, OpenBSD, Plan 9 o Solaris
  • Arquitectura compatible: amd64, arm64, arm, 386, ppc64le, s390x, mips, mipsle, mips64, mips64le, riscv64
  • Para montaje FUSE: kernel con soporte FUSE y paquete fuse3 instalado
  • Para compilar desde fuente: Go 1.21 o superior
  • Para Docker: Docker Engine 20.10+ y Docker Compose v2+

Instalación con Docker Compose

Descarga directa (binario oficial)

Descarga el binario precompilado para tu plataforma desde la página oficial. No requiere instalación, solo ejecuta el archivo.

# Linux/macOS/BSD (ejemplo amd64)
curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip
cd rclone-*-linux-amd64
sudo cp rclone /usr/local/bin/
sudo chown root:root /usr/local/bin/rclone
sudo chmod 755 /usr/local/bin/rclone

# Verificar instalación
rclone version

Instalación con script oficial

Script de instalación automática que detecta la plataforma y coloca el binario en /usr/local/bin.

curl https://rclone.org/install.sh | sudo bash

Ejecución con Docker (imagen oficial)

La imagen oficial rclone/rclone en Docker Hub permite ejecutar rclone en contenedor. Monta directorios de configuración y datos según necesidad.

# Ejemplo básico: listar remotos configurados
docker run –rm \
-v $HOME/.config/rclone:/config/rclone \
-v $HOME/data:/data \
rclone/rclone listremotes

# Montar un remoto (requiere –cap-add SYS_ADMIN y –device /dev/fuse)
docker run -d \
–name rclone-mount \
–cap-add SYS_ADMIN \
–device /dev/fuse \
–security-opt apparmor:unconfined \
-v $HOME/.config/rclone:/config/rclone \
-v $HOME/mnt:/mnt:shared \
rclone/rclone mount remote:path /mnt –allow-other –vfs-cache-mode writes

Docker Compose para servicio persistente

Define un servicio rclone en docker-compose.yml para montaje continuo o tareas programadas. Ajusta UID/GID según tu usuario.

version: '3.8'

services:
rclone:
image: rclone/rclone:latest
container_name: rclone
user: "1000:1000"
cap_add:
– SYS_ADMIN
devices:
– /dev/fuse
security_opt:
– apparmor:unconfined
volumes:
– ~/.config/rclone:/config/rclone
– ~/data:/data
– ~/mnt:/mnt:shared
environment:
– XDG_CONFIG_HOME=/config
# Comando para montaje persistente (ajusta remote:path)
command: mount remote:path /mnt –allow-other –vfs-cache-mode writes –daemon
restart: unless-stopped

Acceder al proyecto

Configuración inicial interactiva

Ejecuta 'rclone config' para crear remotos mediante asistente interactivo. La configuración se guarda en ~/.config/rclone/rclone.conf (o XDG_CONFIG_HOME).

Comandos básicos de operación

Usa 'rclone copy source:path dest:path' para copiar, 'rclone sync source:path dest:path' para sincronizar unidireccional, 'rclone bisync path1 path2' para bidireccional, 'rclone check source:path dest:path' para verificar, 'rclone mount remote:path /mnt' para montar FUSE, 'rclone serve http /path' para servir vía HTTP.

Ayuda y documentación de comandos

Ejecuta 'rclone –help' para lista general, 'rclone command –help' para ayuda específica de un subcomando, o consulta la documentación online en https://rclone.org/docs/

Casos de uso

  • Backup automatizado de servidores a almacenamiento cloud (S3, B2, Google Drive, etc.)
  • Sincronización bidireccional entre dos cuentas cloud distintas (ej. Google Drive ↔ OneDrive)
  • Migración de datos entre proveedores cloud sin pasar por disco local
  • Montaje de almacenamiento cloud como disco local para aplicaciones legacy
  • Distribución de archivos mediante servidor HTTP/WebDAV/FTP/SFTP/DLNA integrado
  • Cifrado de datos sensibles antes de subirlos a proveedores públicos (backend Crypt)
  • Compresión y fragmentación de archivos grandes para superar límites de proveedores
  • Replicación de buckets S3 entre regiones o cuentas (AWS ↔ MinIO ↔ Wasabi ↔ R2)

Configuración avanzada

Cifrado de extremo a extremo (Crypt)

Crea un remote crypt que envuelve otro remote. Configura con 'rclone config' eligiendo tipo 'crypt'. Define contraseña para cifrado de datos y opcionalmente para nombres de archivo. Ejemplo de uso directo: 'rclone copy /data cryptremote:bucket/path'.

# Configuración manual en rclone.conf
[cryptremote]
remote = s3remote:bucket/path
password = *** ENCRYPTED ***
password2 = *** ENCRYPTED ***
filename_encryption = standard
directory_name_encryption = true

Montaje FUSE con caché VFS optimizado

Mejora rendimiento de montaje usando –vfs-cache-mode writes o full, –vfs-cache-max-size, –vfs-read-chunk-size y –buffer-size. Requiere –allow-other para acceso multi-usuario y /etc/fuse.conf con user_allow_other.

rclone mount remote:path /mnt \
–allow-other \
–vfs-cache-mode writes \
–vfs-cache-max-size 10G \
–vfs-read-chunk-size 128M \
–buffer-size 256M \
–dir-cache-time 96h \
–poll-interval 1m \
–daemon

Servidor HTTP/WebDAV/FTP/SFTP/DLNA

Sirve cualquier remote o directorio local. Soporta autenticación, TLS, plantillas de directorio y transcodificación DLNA.

# Servidor HTTP de solo lectura en puerto 8080
rclone serve http remote:path –addr :8080 –read-only

# Servidor WebDAV con autenticación
rclone serve webdav remote:path –addr :8081 –user user –pass pass

# Servidor SFTP
rclone serve sftp remote:path –addr :2022 –user user –pass pass

Bisync para sincronización bidireccional robusta

Mantiene dos directorios sincronizados en ambas direcciones con detección de conflictos, historial y recuperación. Requiere ejecución inicial con –resync si no hay estado previo.

# Primera ejecución (crea estado)
rclone bisync /local/path remote:path –resync –create-empty-src-dirs

# Ejecuciones posteriores (incremental)
rclone bisync /local/path remote:path –create-empty-src-dirs

# Programar en cron/systemd timer para automatización

Filtros y reglas de inclusión/exclusión

Usa –include, –exclude, –filter, –filter-from para controlar qué archivos se transfieren. Patrones tipo glob y expresiones regulares soportadas.

# Copiar solo imágenes y documentos
rclone copy /data remote:backup \
–include "*.{jpg,jpeg,png,gif,pdf,doc,docx}" \
–exclude "*.tmp" \
–progress

Gestión y mantenimiento

Actualización de rclone

Descarga la última versión desde https://rclone.org/downloads/ o ejecuta el script de instalación nuevamente. En Docker, actualiza la imagen: 'docker pull rclone/rclone:latest' y recrea el contenedor.

# Actualización binario (Linux/macOS)
curl https://rclone.org/install.sh | sudo bash

# Actualización Docker
docker pull rclone/rclone:latest
docker compose up -d –force-recreate

Gestión de configuración y remotos

Edita ~/.config/rclone/rclone.conf directamente o usa 'rclone config' para añadir/eliminar/modificar remotos. 'rclone config show' muestra configuración actual (con contraseñas ofuscadas). 'rclone config file' muestra ruta del archivo.

# Ver remotos configurados
rclone listremotes

# Ver configuración de un remote
rclone config show remote_name

# Probar conexión a remote
rclone lsd remote_name:

Limpieza de caché VFS y metadata

El caché VFS (–vfs-cache-mode) almacena datos en disco. Limpia con 'rclone rc vfs/forget' vía RC o elimina directorio de caché manualmente. La metadata de bisync se guarda en el directorio de trabajo.

# Limpiar caché VFS vía Remote Control (requiere –rc)
rclone rc vfs/forget remote=remote:path

# Ver estadísticas de caché
rclone rc vfs/stats remote=remote:path

Monitoreo y logging

Usa –log-file, –log-level (DEBUG, INFO, NOTICE, ERROR), –stats y –stats-file para seguimiento. Remote Control (–rc) expone API HTTP para métricas y control en tiempo real.

# Ejecución con logging detallado y stats cada 30s
rclone sync /src remote:dst \
–log-file /var/log/rclone.log \
–log-level INFO \
–stats 30s \
–stats-file-name-length 0

# Habilitar Remote Control en puerto 5572
rclone mount remote:path /mnt –rc –rc-addr :5572 –rc-no-auth

Stack técnico

  • Go (Golang) 1.21+
  • Docker / Docker Compose
  • FUSE3 (libfuse3) para montaje de sistemas de archivos
  • Alpine Linux (imagen Docker base)
  • GitHub Actions (CI/CD)
  • Make (sistema de build)

Referencias oficiales

Apoya el canal GENBYTE

Sígueme en mis redes sociales

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *