Rclone: Sincroniza ficheros en la nube

6 minutos de lectura

Ya comenté en este articulo que andaba de mudanza, estaba buscando un nuevo alojamiento para replicar el backups de mis ficheros, ya expliqué la solución que encontré para las fotografías, y ahora le toca el turno para mis ficheros.

Después de mirar y valorar las típicas alternativas (Google Drive, Dropbox, Amazon S3, etc.) y leer ciertos artículos me decidí por los servios del proveedor Hubic el cual nos ofrece 25 GB de manera gratuita al crear una nueva cuenta, podemos acumular entre 25 GB y 2,5 TB de espacio adicional invitando a un máximo de 5 personas. A su vez las personas a las que invitas, disfrutarán gratuitamente de un espacio de 30 GB en lugar de 25 GB.

Elegido el proveedor para mi almacenamiento en la nube, necesitaba buscar un cliente pa sincronizar los datos y que funcionase bien en la raspberry pi con raspbian lite, el elegido ha sido Rclone, herramienta que se usa mediante la linea de comandos (aunque también existen GUIs como RcloneBrowser) y que nos permite sincronizar archivos o directorios desde nuestro ordenador con diversos proveedores de alojamiento en la nube, incluso permite la sincronización entre diferentes proveedores previo paso por nuestro sistema de ficheros local.

Instalación

Rclone se encuentra en los respositoriosde raspbian, pero en su versión 1.35-1, para su instalación

1sudo apt install rclone

Podemos instalar la ultima versión de Rclone utilizando rclone4pi

1curl -L https://raw.github.com/pageauc/rclone4pi/master/rclone-install.sh | bash

En raspbian litle no disponemos de entorno gráfico, pero vamos a necesitar un navegador web para poder acreditar nuestra cuenta, para ello vamos a instalar links2 que es un navegador web de código abierto en modo terminal.

1sudo apt-get install links2

Configuración

Lo siguientes pasos son para configurar un acceso remoto a Hbic,pero valdría para cualquier otro proveedor soportado por Rclone, desde una terminal

1rclone config
1carlos@raspberrypi:~ $ rclone config
22018/04/01 22:54:56 Config file "/home/carlos/.rclone.conf" not found - using defaults
3No remotes found - make a new one
4n) New remote
5s) Set configuration password
6q) Quit config
7n/s/q> n

Seleccionamos n para configurar un nuevo acceso

1name> hubic

Elegimos un nombre para el acceso remoto

1name> hubic

Ahora debemos de seleccionar el servicio a utilizar, para Hubic, selecionamos la opcion 8

 1Type of storage to configure.
 2Choose a number from below, or type in your own value
 3 1 / Amazon Drive
 4   \ "amazon cloud drive"
 5 2 / Amazon S3 (also Dreamhost, Ceph, Minio)
 6   \ "s3"
 7 3 / Backblaze B2
 8   \ "b2"
 9 4 / Dropbox
10   \ "dropbox"
11 5 / Encrypt/Decrypt a remote
12   \ "crypt"
13 6 / Google Cloud Storage (this is not Google Drive)
14   \ "google cloud storage"
15 7 / Google Drive
16   \ "drive"
17 8 / Hubic
18   \ "hubic"
19 9 / Local Disk
20   \ "local"
2110 / Microsoft OneDrive
22   \ "onedrive"
2311 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
24   \ "swift"
2512 / Yandex Disk
26   \ "yandex"
27Storage> 8

Dejamos en blanco los siguientes campos

1Hubic Client Id - leave blank normally.
2client_id>
3Hubic Client Secret - leave blank normally.
4client_secret>

Selecionamos y

1Remote config
2Use auto config?
3 * Say Y if not sure
4 * Say N if you are working on a remote or headless machine
5y) Yes
6n) No
7y/n> y

Nos pide que visitemos la siguiente URL para poder autorizar a Rclone el acceso al proveedor

1If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
2Log in and authorize rclone for access
3Waiting for code...

Ahora copiamos la dirección del enlace y abrimos una nueva terminal y ejecutamos:

1links2 http://127.0.0.1:53682/auth

Al ser la primera vez que ejecutamos links2 aparece un mensaje de bienvenida, pulsamos en Aceptar

Introducimos nuestra dirección de correo electrónico y la contraseña de nuestro usuario de Hubic

Si todo ha salido bien aparecerá una ventana como esta, ya podemos cerrar esta terminal y volver a la primera

 1Got code
 2--------------------
 3[hubic]
 4client_id =
 5client_secret =
 6token = {"access_token":"ktsBxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxRCQG","token_type":"Bearer","refresh_token":"yttXuA5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxfICFZVyhf","expiry":"2018-04-02T05:05:20.659734077+02:00"}
 7--------------------
 8y) Yes this is OK
 9e) Edit this remote
10d) Delete this remote
11y/e/d> y

Pulsamos y

 1Current remotes:
 2
 3Name                 Type
 4====                 ====
 5hubic                hubic
 6
 7e) Edit existing remote
 8n) New remote
 9d) Delete remote
10s) Set configuration password
11q) Quit config
12e/n/d/s/q> q

Terminamos pulsando q

Uso

Recuerda que durante la configuración de rclone, creé un alias para la conexión con el servidor remoto Hubic llamado hubic Cada vez que hagamos una operación en el servidor, lo haremos a través de ese alias

Listar el directorio raíz del servidor

1rclone lsd hubic: -vv

Listar el contenido de un directorio

1rclone ls hubic:directorio_remoto -vv

Para copiar un directorio local a la carpeta backup de Hubic:

1rclone copy /media/Nas01/backup hubic:backup -vv

Si queremos que el directorio sea visible en el navegador web de Hibuc debemos copiar los ficheros en la carpeta default de Hibuc

1rclone copy /media/Nas01/backup hubic:default/backup -vv

Para sincronizar una carpeta remota en nuestro sistema de ficheros local, borra los ficheros locales que no se encuentren en Hibuc

1rclone sync hubic:directorio_remoto /home/carlos/directorio_local -vv

Hay muchas mas opciones, las puedes encontrar en su documentación

Automatización

Podemos usar cron para programar la sincronización de las carpetas, por ejemplo

10 4 * * * rclone copy /media/Nas01/Datos/.vaults hubic:default/vaults -q

Extra

Si ya tenias funcionando Rclone en otro ordenador o si quieres hacer todo el proceso anterior de una forma mas cómoda desde un ordenador en vez de la raspberry pi, sobre todo a la hora de obtener los tokens de acceso a traves del navegador web, basta con copiar el fichero de configuracion de Rclone que se encuentra en $HOME/.rclone.conf, y añadir o copiar su contenido al fichero $HOME/.rclone.conf de la raspberry

 1[hubic]
 2type = hubic
 3client_id =
 4client_secret =
 5token = {"access_token":"QsiKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxlR","token_type":"Bearer","refresh_token":"yttxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxVyhf","expiry":"2018-04-02T22:14:26.673004021+02:00"}
 6
 7[gdrive]
 8type = drive
 9client_id =
10client_secret =
11scope = drive
12root_folder_id =
13service_account_file =
14token = {"access_token":"ya29.GluRxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxfhwMnqP","token_type":"Bearer","refresh_token":"1/ZuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxegM","expiry":"2018-04-02T21:10:48.238714318+02:00"}