logo rclone

En este apunte explico cómo gestiono mis datos en un Mac. Mi objetivo es poder trabajar a máxima velocidad y desde cualquier sitio con los datos más utilizados, contar con un almacén extra para los menos accedidos y por supuesto contar con múltiples copias de seguridad.

Los datos fuentes están en el disco SSD interno del Mac y un par de discos externos. Las réplicas y los backups están en iCloud, un linux remoto y Google Drive. Varios sitios, diferentes tecnologías, velocidades, necesidades. La herramienta rclone es perfecta para ayudarme a la hora de contar con múltiples copias de seguridad sincronizadas


Introducción

Rclone es una poderosa herramienta de línea de comandos que permite gestionar y sincronizar archivos y directorios. Es muy versátil, te ayudará a administrar tus datos de manera efectiva, hacer copias de seguridad en servicios en la nube, en discos externos locales, remotos y mantenerlos sincronizados entre todos ellos.

  • Datos originales

Mis datos están en dos sitios: privy Baul. La carpeta priv está alojada en iCloud y sincronizada (100% descargada) en el disco duro local del Mac. Es donde tengo los datos principales (accesibles desde el entorno Apple, iPhone, iPad, etc). El sitio Baul es un disco duro externo SSD (Thunderbolt 4) muy rápido, donde tengo el almacén al que solo necesito acceder de vez en cuando y desde un único equipo (el Mac); me recuerda al típico disco D:\ de otra época.

Diseño completo de mis discos y backups
  • Copias de seguridad

Del Mac: Quiero asegurar todo, uso TimeMachine para el backup completo del disco principal del Mac a un disco USB externo (USB 3.0, mecánico). Lo configuro y el sistema operativo se encarga de todo.

De priv y Baul: Son mis dos fuentes originales, así que las copio en varios sitios usando rclone: disco externo Trastero, un linux remoto y Google Drive. Al tenerlo en Google Drive consigo un par de beneficios: una copia de “último recurso” si todo falla y acceso desde cualquier sistema operativo a cualquier dato desde cualquier lugar.


Copias de seguridad: Time Machine

Para configurar Time Machine en un Mac, primero conecta un disco duro externo y ábrelo en “Preferencias del Sistema”, luego selecciona “Time Machine” y activa la función, elige la unidad externa como destino, configura las opciones de respaldo si es necesario y, finalmente, inicia Time Machine para que realice copias de seguridad automáticas de tu sistema en la unidad externa, asegurándote de mantenerla conectada para mantener las copias de seguridad actualizadas

En mi caso he configurado un disco externo USB 3.0 (Seagate Portable Drive) de 5TB bastante asequible y con un buen balance entre fiabilidad (mecánico de 2,5 pulgadas) y velocidad (120 MB/s).

Configuración de Time Machine


Copias de seguridad: rclone

  • Estos son los pasos para instalar rclone en macOS:
  1. Abre el Terminal en tu Mac.

  2. Instala Homebrew si aún no lo tienes instalado.

  3. Ejecuta el siguiente comando para instalar rclone:

    brew install rclone
    :
    => Caveats
    Homebrew's installation does not include the `mount` subcommand on MacOS.
    zsh completions have been installed to:
    /opt/homebrew/share/zsh/site-functions
    
  4. Verifica que rclone se haya instalado correctamente:

    rclone version
    
  • Estos son los pasos para instalar rclone en Linux

La instalación de rclone en Linux es igualmente sencilla. A continuación, se describen los pasos generales:

  1. Abre un Terminal en tu distribución Linux.

  2. Puedes utilizar el administrador de paquetes de tu distribución para instalar rclone. Por ejemplo, en Ubuntu, puedes ejecutar:

    sudo apt-get install rclone
    

    En otras distribuciones, como Fedora, CentOS o Debian, puedes utilizar el administrador de paquetes correspondiente.

  3. Verifica la instalación ejecutando:

    rclone version
    


Mi caso de uso

Como decía, el disco duro principal interno del Mac “Macintosh HD” (HD a partir de ahora) tiene el Sistema Operativo, las aplicaciones y el HOME de mi usuario (/Users/luis) con la carpeta priv. El disco externo SSD Thunderbolt 4 (1000MB/s) Baul tiene el espacio extra para datos que comentaba al principio.

Dato Origen Dónde se hace el backup
HD Disco interno TimeMachine disco externo USB
priv iCloud (Datos principales) 1) por la sincronización iCloud <> Local y 2) Backups en Trastero (rclone), en linux (rclone) y futuro Dropbox/Google (rclone)
Baul Disco externo (1000MB/s) Backups en Trastero (rclone) y en linux remoto (rclone)
Trastero Disco externo Este disco externo SSD (500MB/s) los uso exclusivamente como destino para los backups. ¿Porqué tan rápido? pues porque también guardo alguna cosa extra y si se rompe Baul podrá dar un buen servicio mientras busco un reemplazo
Google Drive Disco en la Nube Lo uso para tener una copia extra por si todo falla, pero también para poder acceder a mis datos desde cualquier sitio y cualquier sistema operativo (por ejemplo un Linux)


Configuración de rclone

Veamos cómo configurar los destinos (incluye carpetas o discos locales y además los sitios remotos):

 Nota: Toda la configuración reside en ~/.config/rclone/rclone.conf
  1. Ejecuta el siguiente comando para iniciar la configuración de rclone:

    rclone config
    
  2. Puedes seguir las instrucciones del asistente de configuración para añadir un nuevo almacenamiento remoto. Puedes elegir entre una amplia gama de servicios en la nube y sistemas de archivos locales.

  3. Proporciona la información requerida, como las credenciales de acceso, y asigna un nombre al almacenamiento remoto para referencia futura.

  4. Una vez configurado el almacenamiento remoto, puedes utilizar rclone para sincronizar tus directorios con él.

Así es como quedó mi fichero rclone.conf tras mi configuración inicial, donde dí de alta las carpetas y discos locales (Luis, Baul, Trastero) y el directorio priv que está bajo iCloud.

[Luis]
type = alias
remote = /Users/luis

[Baul]
type = alias
remote = /Volumes/Baul

[Trastero]
type = alias
remote = /Volumes/Trastero

[iCloud]
type = alias
remote = /Users/luis/Library/Mobile Documents/com~apple~CloudDocs

IMPORTANTE: Mi carpeta priv realmente reside en iCloud, para que TODO el contenido de dicha carpeta esté siempre completamente sincronizado en el disco duro interno local, y poder copiarlos a otro sitio con rclone, es importante indicarle a macOS que se los baje a local. ¿Cómo?, pues desde Finder > iCloud > busco y botón derecho sobre priv > “Descargar ahora”. Se bajará una copia completa que sincroniza permanentemente a partir de ese momento con iCloud.


Configuración de Google Drive

Antes de añadir el destino de Google Drive a la configuración de rclone vamos a preparar nuestra cuenta con Google.

  • Crear un client_id en Google (fuente)
  1. Entrar en la Google API Console

  2. Creo un proyecto nuevo: Rclone LuisPa, en Organización dejé Sin Organización y “Seleccionar Proyecto”.

  3. Bajo “APIs y servicios” > Habilitar APIs y Servicios > busco Drive, click en “Google Drive API” y “HABILITAR”, en la pantalla que muestra

Click en “Credenciales” en el panel izquierdo (no en “Crear Credenciales” que habríría un asistente) Si ya habías configurado la “Oauth Consent Screen”, salta al siguiente paso

Click en el botón “CONFIGURAR PANTALLA DE CONSENTIMIENTO” > “Externos” > CREAR

  Application name: rclone
  User Support Email: pon.aquí.tu.email@gmail.com
  Developer Contact Email: pon.aquí.tu.email@gmail.com
  GUARDAR Y CONTINUAR

Click en AGREGAR o QUITAR PERMISOS.

  Doy permisos a .../auth/docs, .../auth/drive, .../auth/drive.metadata.readonly
  ACTUALIZAR
  GUARDAR y CONTINUAR

Añádete a tí mismo en “Usuarios de prueba”,

  Añado a mi usuario con el correo
  GUARDAR Y CONTINUAR

Click de nuevo en “Credenciales” en el panel izquierdo.

  1. Click en “+ CREAR CREDENCIALES” y seleccionar “ID de cliente de OAuth”.

Elijo un tipo de apliación “App de escritorio” y en nombre pongo “Cliente Escritorio”, CREAR

  1. Muesta el client ID y un client secret. GUARDARLOS en un lugar seguro :-)

  2. Click en “Pantalla de consentimiento de OAuth” en el panel izquierdo, click en “publicar App” y confirmar. Ignoro la necesidad de “Verificación”.

Nota: Teóricamente se espera que “envíes tu aplicación para su verificación” y luego esperes semanas para su respuesta; en la práctica, puedes seguir adelante y utilizar el ID de cliente y el secreto de cliente con rclone, el único problema será una pantalla de confirmación muy aterradora que se muestra cuando te conectas a través de tu navegador para que rclone pueda obtener su token-id (pero como esto sólo ocurre durante la configuración remota, no es demasiado problema).
  • Añadir el destino de Google Drive
$ rclone config

:
n) New remote
e/n/d/r/c/s/q> n

name> Drive
Storage> drive
client_id> 1111111111111-el_client_id_que_cree_en_el_paso_anterior.apps.googleusercontent.com
client_secret> ELSECRETO-CreadoEnElPaso-Anterior
scope> 1   (Full access all files..)
service_account_file> (Pulso Intro, lo dejo vacío)
Edit advanced config?
y/n> n
Use web browser to automatically authenticate rclone with remote?
y/n> Y
:
Abre el navegador y autorizo !!
2023/12/13 11:48:22 NOTICE: Log in and authorize rclone for access
2023/12/13 11:48:22 NOTICE: Waiting for code...
2023/12/13 11:48:33 NOTICE: Got code
Configure this as a Shared Drive (Team Drive)?
y/n> n
Configuration complete.
Options:
- type: drive
- client_id: 1111111111111-el_client_id_que_cree_en_el_paso_anterior.apps.googleusercontent.com
- client_secret: ELSECRETO-CreadoEnElPaso-Anterior
- scope: drive
- token: {"access_token":"ya29.token-largísimo","token_type":"Bearer","refresh_token":"1//token-mas-largo-todavía","expiry":"2023-12-13T12:48:32.418859+01:00"}
- team_drive:
Keep this "Drive" remote?
y/e/d> y
q) Quit config
e/n/d/r/c/s/q> q

Ya tengo disponible un nuevo destino en la nube de Google para poder utilizar con rclone


Ejecutar rclone

  • Ejemplo de sincronización de directorios entre dos discos locales

Veamos el típico ejemplo de sincronización de directorios entre dos discos locales. Imaginemos que queremos hacer copia de seguridad en Trastero de varios directorios. Recuerda preparar las carpetas destino de los Backups

mkdir -p /Volumes/Trastero/Baul
mkdir -p /Volumes/Trastero/iCloud
mkdir -p /Volumes/Trastero/priv
mkdir -p /Volumes/Trastero/Other

Estos serían algunos ejemplos:

rclone sync --progress --copy-links --skip-links --exclude="*.socket" --exclude=".DS_Store*" Baul:fotos Trastero:Baul/fotos
rclone sync --progress --copy-links --skip-links --exclude="*.socket" --exclude=".DS_Store*" Baul:gestión Trastero:Baul/gestión
rclone sync --progress --copy-links --skip-links --exclude="*.socket" --exclude=".DS_Store*" iCloud:priv Trastero:iCloud/priv
rclone sync --progress --copy-links --skip-links --exclude="*.socket" --exclude=".DS_Store*" Luis:Pictures/Lightroom Trastero:Other/Lightroom

Ah!, recomiendo usar --dry-run o check para probar primero. Otra opción es crearse un fichero de filtraje donde especifico qué quiero excluír e incluir. Por ejemplo, para los directorios de Baul, creo el fichero filter-from-Baul.txt

- .DS_Store
- _gsdata_
- .DocumentRevisions-V100
- .Spotlight-V100
- .TemporaryItems
- .Trashes
- .fseventsd
+ /fotos**
+ /gestión**
- *
  • Primero hago un check y luego el sync:
rclone check --progress --copy-links --filter-from ~/.config/rclone/filter-from-Baul.txt Baul: Trastero:
rclone sync --progress --copy-links --filter-from ~/.config/rclone/filter-from-Baul.txt Baul: Trastero:


  • Ejemplo de sincronización de con Google Drive

Para sincronizar un directorio con Google Drive, utilizaría el siguiente comando de ejemplo:

rclone sync --progress --copy-links --skip-links --exclude="*.socket" --exclude=".DS_Store*" iCloud:0_priv Drive:0_priv


Sincronización con un Ordenador Remoto

Para sincronizar tus directorios con un ordenador remoto que ejecute rclone servidor, puedes utilizar el siguiente comando de ejemplo:

rclone sync /ruta/al/priv OrdenadorRemoto:/ruta/en/el/servidor/priv
rclone sync /ruta/al/work OrdenadorRemoto:/ruta/en/el/servidor/work
rclone sync /ruta/al/Negativos OrdenadorRemoto:/ruta/en/el/servidor/Negativos
rclone sync /ruta/al/Baul OrdenadorRemoto:/ruta/en/el/servidor/Baul

Reemplaza /ruta/al/priv, /ruta/al/work, /ruta/al/Negativos, /ruta/al/Baul, OrdenadorRemoto, y /ruta/en/el/servidor con las rutas y nombres de servidor correctos.

Con estos comandos, puedes mantener tus directorios sincronizados tanto en la nube como en un servidor remoto. Rclone te proporciona una forma eficaz de gestionar tus datos en macOS y Linux, permitiéndote respaldarlos y mantenerlos actualizados en múltiples ubicaciones.

En resumen, rclone es una herramienta esencial para cualquier usuario que necesite sincronizar y respaldar datos en macOS y Linux. Su versatilidad y facilidad de uso hacen que sea una elección sólida para la gestión de archivos en la nube y la sincronización entre dispositivos.


Trabajar en modo gráfico.

Tenemos un par de opciones. Yo no las uso, porque una vez que te pones a jugar y probar con la versión del CLI la verdad es que resulta muy cómodo poner todos los comandos en un script y vas mucho más rápido.

GUI Experimental embebido en rclone

Existe un GUI experimental que puedes instalar para trabajar en modo gráfico. Basta con ejecutar el siguiente comando, que se bajará todo lo necesario y arrancará un servidor web local. Arranca un navegador y se conecta (puedes evitarlo con --rc-web-gui-no-open-browser).

En este ejemplo pido que use un usuario/password concretos y que sea “verbose”, cambia el usuario y la contraseña a lo que quieras. También puede funcionar sin autenticación con --rc-no-auth

rclone rcd --rc-web-gui --rc-user luis --rc-pass mipase -vv
:
2023/11/18 12:38:47 DEBUG : rclone: Version "v1.64.2" starting with parameters ["rclone" "rcd" "--rc-web-gui" "--rc-user" "luis" "--rc-pass" "mipase" "-vv"]
2023/11/18 12:38:47 DEBUG : Current tag: v2.0.5, Release tag: v2.0.5
2023/11/18 12:38:47 NOTICE: Web GUI exists. Update skipped.
2023/11/18 12:38:47 NOTICE: Serving Web GUI
2023/11/18 12:38:47 INFO  : Using --user luis --pass XXXX as authenticated user
2023/11/18 12:38:47 NOTICE: Serving remote control on http://127.0.0.1:5572/
2023/11/18 12:38:47 DEBUG : login_token "bHVp12343535hc2U="
2023/11/18 12:38:47 INFO  : /: 127.0.0.1:59654: Unauthorized request from
:
Login en el GUI Experimental
GUI Experimental


RcloneBrowser

Otra opción, si quieres una versión estable, es RcloneBrowser, un GUI multi plataforma que soporta macOS, GNU/Linux, la familia BSD y Windows.

Logo del proyecto

Para instalarlo en macOS, sigue estos pasos:

  1. Descarga la última versión desde https://github.com/kapitainsky/RcloneBrowser/releases. En el momento de la publicación utilicé rclone-browser-1.8.0-a0b66c6-macos.dmg

  2. Al ejecutarlo configuro el path al ejecutable y la ubicación del fichero de configuración

Configuración básica


Actualización

Para tenerlo actualizado a la última versión, puedes utilizar el siguiente comando:

  • En macOS
brew update
brew upgrade
  • En Linux
apt update && apt upgrade -y 
  • Para actualizar el GUI experimental:
rclone rcd --rc-web-gui --rc-web-gui-update
# Si el GUI está roto se puede forzar el update con `--rc-web-gui-force-update`