Rclone: Sincroniza ficheros en la nube
2018-04-09
Índice
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>
Seleccionamos 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"}
Espero que te haya gustado, pasa un buen día. 🐧