Rclone: Sincroniza ficheros en la nube

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

sudo apt install rclone

Podemos instalar la ultima versión de Rclone utilizando rclone4pi

curl -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.

sudo 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

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

Seleccionamos n para configurar un nuevo acceso

name> hubic

Elegimos un nombre para el acceso remoto

name> hubic

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

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

Dejamos en blanco los siguientes campos

Hubic Client Id - leave blank normally.
client_id>
Hubic Client Secret - leave blank normally.
client_secret>

Selecionamos y

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

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

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

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

links2 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

Got code
--------------------
[hubic]
client_id =
client_secret =
token = {"access_token":"ktsBxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxRCQG","token_type":"Bearer","refresh_token":"yttXuA5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxfICFZVyhf","expiry":"2018-04-02T05:05:20.659734077+02:00"}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y

Pulsamos y

Current remotes:

Name                 Type
====                 ====
hubic                hubic

e) Edit existing remote
n) New remote
d) Delete remote
s) Set configuration password
q) Quit config
e/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

rclone lsd hubic: -vv

Listar el contenido de un directorio

rclone ls hubic:directorio_remoto -vv

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

rclone 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

rclone 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

rclone 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

0 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

[hubic]
type = hubic
client_id =
client_secret =
token = {"access_token":"QsiKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxlR","token_type":"Bearer","refresh_token":"yttxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxVyhf","expiry":"2018-04-02T22:14:26.673004021+02:00"}

[gdrive]
type = drive
client_id =
client_secret =
scope = drive
root_folder_id =
service_account_file =
token = {"access_token":"ya29.GluRxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxfhwMnqP","token_type":"Bearer","refresh_token":"1/ZuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxegM","expiry":"2018-04-02T21:10:48.238714318+02:00"}
comentario powered by Disqus