Almacenamiento en la nube desde Linux con RClone
Pocos de los servicios de almacenamiento en la nube disponen de cliente de sincronización para el sistema operativo GNU/Linux. La mayoría se limitan a sistemas Windows y MacOS.
Hece tiempo descubrí un estupendo software que permite acceder a la mayoría de los almacenamientos en Internet disponibles a día de hoy. Además, para nuestra alegría y tranquilidad es software libre. No me resultaría cómodo ceder el control de mi almacenamiento en la nube a software propietario.
Este programa se llama RClone y, a pesar de su sencillez inicial, esconde una infinidad de opciones para gestionar archivos en la nube y sincronizarlos con el sistema de archivos local.
Hay que decir que RClone está programado con el lenguaje Go, lo que significa que es multiplataforma. En esta ocasión me voy a centrar exclusivamente en la instalación en un sistema GNU/Linux, concretamente Ubuntu 18.04. De todas formas, la mayoría del proceso de instalación en otras variantes de GNU/Linux o en otros sistemas operativos es el mismo y está muy bien explicado en su sitio web en rclone.org.
RClone soporta muchos tipos de almacenamiento. Tienes la lista completa en su web. De todos, tienes que saber que Amazon Drive no está soportado realmente, aunque aparezca en dicha lista. El desarrollador tuvo un problema con Amazon y le retiraron su clave de desarrollador. Si tienes una aún podrías usarlo, pero a día de hoy Amazon mantiene su plan de desarrolladores en modo privado.
Para facilitar aún mas el proceso, han programado un script de instalación que automatiza todo el proceso. Se puede instalar directamente desde el script en la web aunque, como no facilitan una firma digital para su validación, explicaré el proceso paso a paso.
El primero es descargar el binario precompilado. En la línea de terminal ejecura el siguiente comando:
Cada tipo de almacenamiento necesita unos datos diferentes. La buena noticia es que RClone adapta los datos que pide a este hecho, de manera que solamente te tienes que dejar guiar.
Para utilizar durante el ejemplo, he creado una cuenta de Microsoft OneDrive
Siempre que queramos administrar los almacenamientos tenemos que ejecutar el comando siguiente
Después de escribir el usuario y la contraseña OneDrive te pedirá permiso para compartir tus datos con RClone. Tranquilo, se refiere a tu copia local de RClone ya que ésta no se comunica con ningún servidor de terceros ni de su desarrollador.
Sabrás que todo ha ido bien si tienes un mensaje como éste
Si estás usando una sesión que no dispone de modo gráfico tendrás que escribir "N" en la respuesta anterior. RClone te mostrará las instrucciones de lo que tienes que hacer. El proceso consiste en utilizar otro ordenador con modo gráfico para obtener la credencial y pegarla en el primero.
Siempre que queramos hacer referencia a un almacenamiento lo haremos con le nombre que le dimos al crearlo, terminando con ":". En nuestro ejemplo el almacenamiento se llama "mi_disco_OneDrive:"
La lista de comandos la puedes obtener con
Voy a hacer la prueba con
Normalmente, los proveedores de almacenamiento en la nube detectan cuando un mismo acceso se está utilizando desde direcciones diferentes y probablemente te avisaría. Pero tampoco queremos llegar a este punto.
Para proteger los datos, RClone te permite cifrar el contenido del fichero de configuración. Para ello ejecutaremos de nuevo el comando
Si seleccionamos la opción "s" te pedirá la contraseña de cifrado.
También puedes evitar que te pida contraseña si añades
Hece tiempo descubrí un estupendo software que permite acceder a la mayoría de los almacenamientos en Internet disponibles a día de hoy. Además, para nuestra alegría y tranquilidad es software libre. No me resultaría cómodo ceder el control de mi almacenamiento en la nube a software propietario.
Este programa se llama RClone y, a pesar de su sencillez inicial, esconde una infinidad de opciones para gestionar archivos en la nube y sincronizarlos con el sistema de archivos local.
Hay que decir que RClone está programado con el lenguaje Go, lo que significa que es multiplataforma. En esta ocasión me voy a centrar exclusivamente en la instalación en un sistema GNU/Linux, concretamente Ubuntu 18.04. De todas formas, la mayoría del proceso de instalación en otras variantes de GNU/Linux o en otros sistemas operativos es el mismo y está muy bien explicado en su sitio web en rclone.org.
RClone soporta muchos tipos de almacenamiento. Tienes la lista completa en su web. De todos, tienes que saber que Amazon Drive no está soportado realmente, aunque aparezca en dicha lista. El desarrollador tuvo un problema con Amazon y le retiraron su clave de desarrollador. Si tienes una aún podrías usarlo, pero a día de hoy Amazon mantiene su plan de desarrolladores en modo privado.
Instalación
El proceso de instalación es muy sencillo y está perfectamente documentado, paso a paso, en su página.Para facilitar aún mas el proceso, han programado un script de instalación que automatiza todo el proceso. Se puede instalar directamente desde el script en la web aunque, como no facilitan una firma digital para su validación, explicaré el proceso paso a paso.
El primero es descargar el binario precompilado. En la línea de terminal ejecura el siguiente comando:
$ curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip
Si obtienes un mensaje de error como este significa que no tienes instalado el comando curl.Command 'curl' not found, but can be installed with:
sudo apt install curl
Para instalarlo solamente tienes que ejecutar el comando$ sudo apt install curl
A continuación descomprime el archivo. Esto crea un nuevo directorio.$ unzip rclone-current-linux-amd64.zip
$ cd rclone-*-linux-amd64
El siguiente paso es instalar el ejectutable en el directorio adecuado para que sea accesible por todos los usuarios del sistema
$ sudo cp rclone /usr/bin/
$ sudo chown root:root /usr/bin/rclone
$ sudo chmod 755 /usr/bin/rclone
El último paso consiste en añadir la ayuda de RClone al comando man
$ sudo mkdir -p /usr/local/share/man/man1
$ sudo cp rclone.1 /usr/local/share/man/man1/
$ sudo mandb
Comprobamos que la instalación es correcta llamando directamente al comando rclone version. Deberías obtener una respuesta parecida a ésta.
rclone v1.42
- os/arch: linux/amd64
- go version: go1.10.1
Configuración
Para configurar RClone has de configurar las credenciales. Toda la configuración se almacena en el fichero~/<usuario>/.config/rclone/rclone.conf
Fíjate que la configuración de cada usuario es independiente, por lo que solamente tú podrás acceder a tus ajustes y credenciales. Se puede dar instrucciones a rclone para utilizar un archivo de configuración diferente, pero por ahora no vamos a utilizar esta opción.Cada tipo de almacenamiento necesita unos datos diferentes. La buena noticia es que RClone adapta los datos que pide a este hecho, de manera que solamente te tienes que dejar guiar.
Para utilizar durante el ejemplo, he creado una cuenta de Microsoft OneDrive
Siempre que queramos administrar los almacenamientos tenemos que ejecutar el comando siguiente
$ rclone config
A continuación añado la salida del programa junto con mi entrada.2018/08/27 18:16:57 NOTICE: Config file "/home/gmartin/.config/rclone/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
name> mi_disco_OneDrive
Type of storage to configure.
Choose a number from below, or type in your own value
1 / Alias for a existing remote
\ "alias"
2 / Amazon Drive
\ "amazon cloud drive"
3 / Amazon S3 Compliant Storage Providers (AWS, Ceph, Dreamhost, IBM COS, Minio)
\ "s3"
4 / Backblaze B2
\ "b2"
5 / Box
\ "box"
6 / Cache a remote
\ "cache"
7 / Dropbox
\ "dropbox"
8 / Encrypt/Decrypt a remote
\ "crypt"
9 / FTP Connection
\ "ftp"
10 / Google Cloud Storage (this is not Google Drive)
\ "google cloud storage"
11 / Google Drive
\ "drive"
12 / Hubic
\ "hubic"
13 / Local Disk
\ "local"
14 / Mega
\ "mega"
15 / Microsoft Azure Blob Storage
\ "azureblob"
16 / Microsoft OneDrive
\ "onedrive"
17 / OpenDrive
\ "opendrive"
18 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
\ "swift"
19 / Pcloud
\ "pcloud"
20 / QingCloud Object Storage
\ "qingstor"
21 / SSH/SFTP Connection
\ "sftp"
22 / Webdav
\ "webdav"
23 / Yandex Disk
\ "yandex"
24 / http Connection
\ "http"
Storage> 16
Microsoft App Client Id - leave blank normally.
client_id>
Microsoft App Client Secret - leave blank normally.
client_secret>
Remote config
Choose OneDrive account type?
* Say b for a OneDrive business account
* Say p for a personal OneDrive account
b) Business
p) Personal
b/p> p
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
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...
En este punto, si estás utilizando una sesión gráfica, contesta Y. Se abrirá un navegador web con la página de autenticación del servicio de almacenamiento en la nube.Después de escribir el usuario y la contraseña OneDrive te pedirá permiso para compartir tus datos con RClone. Tranquilo, se refiere a tu copia local de RClone ya que ésta no se comunica con ningún servidor de terceros ni de su desarrollador.
Sabrás que todo ha ido bien si tienes un mensaje como éste
Si estás usando una sesión que no dispone de modo gráfico tendrás que escribir "N" en la respuesta anterior. RClone te mostrará las instrucciones de lo que tienes que hacer. El proceso consiste en utilizar otro ordenador con modo gráfico para obtener la credencial y pegarla en el primero.
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> n
For this to work, you will need rclone available on a machine that has a web browser available.
Execute the following on your machine:
rclone authorize "onedrive"
Then paste the result below:
result>
El proceso continúa en la ventana de la terminal. Ya puedes cerrar el navegador.Got code
--------------------
[mi_disco_OneDrive]
type = onedrive
client_id =
client_secret =
token = {"access_token":"EwAQA61DBAAU ...... Sfl9C8e8k$","expiry":"2018-08-27T19:35:33.290331155+02:00"}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
Current remotes:
Name Type
==== ====
mi_disco_OneDrive onedrive
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q
Solamente queda aceptar el cambio pulsando "y". RClone ya tiene lo necesario para acceder a nuestro almacenamiento en la nube.Acceder al contenido
Para gestionar el contenido del almacenamiento también se utiliza el comando rclone, añadiendo el subcomando que necesitemos junto con uno o más parámetros.Siempre que queramos hacer referencia a un almacenamiento lo haremos con le nombre que le dimos al crearlo, terminando con ":". En nuestro ejemplo el almacenamiento se llama "mi_disco_OneDrive:"
La lista de comandos la puedes obtener con
rclone help
about Get quota information from the remote.
authorize Remote authorization.
cachestats Print cache stats for a remote
cat Concatenates any files and sends them to stdout.
check Checks the files in the source and destination match.
cleanup Clean up the remote if possible
config Enter an interactive configuration session.
copy Copy files from source to dest, skipping already copied
copyto Copy files from source to dest, skipping already copied
cryptcheck Cryptcheck checks the integrity of a crypted remote.
cryptdecode Cryptdecode returns unencrypted file names.
dbhashsum Produces a Dropbox hash file for all the objects in the path.
dedupe Interactively find duplicate files and delete/rename them.
delete Remove the contents of path.
deletefile Remove a single file path from remote.
genautocomplete Output completion script for a given shell.
gendocs Output markdown docs for rclone to the directory supplied.
hashsum Produces an hashsum file for all the objects in the path.
help Help about any command.
link Generate public link to file/folder.
listremotes List all the remotes in the config file.
ls List the objects in the path with size and path.
lsd List all directories/containers/buckets in the path.
lsf List directories and objects in remote:path formatted for parsing.
lsjson List directories and objects in the path in JSON format.
lsl List the objects in path with modification time, size and path.
md5sum Produces an md5sum file for all the objects in the path.
mkdir Make the path if it doesn't already exist.
mount Mount the remote as a mountpoint. **EXPERIMENTAL**
move Move files from source to dest.
moveto Move file or directory from source to dest.
ncdu Explore a remote with a text based user interface.
obscure Obscure password for use in the rclone.conf
purge Remove the path and all of its contents.
rc Run a command against a running rclone.
rcat Copies standard input to file on remote.
rmdir Remove the path if empty.
rmdirs Remove empty directories under the path.
serve Serve a remote over a protocol.
sha1sum Produces an sha1sum file for all the objects in the path.
size Prints the total size and number of objects in remote:path.
sync Make source and dest identical, modifying destination only.
touch Create new file or change file modification time.
tree List the contents of the remote in a tree like fashion.
version Show the version number.
Por ejemplo. El comando rclone ls mi_disco_OneDrive: lista todos los ficheros, pero lo hace de manera recursiva. Así que si tienes muchas carpetas listará todas ellas.Voy a hacer la prueba con
rclone lsd mi_disco_OneDrive:, que lista las carpetas del directorio raiz del almacenamiento. El resultado es éste. -1 2018-08-27 18:03:44 0 Documentos
-1 2018-08-27 18:03:43 0 Imágenes
Lee la lista de comandos anterior para ver todo lo que puedes hacer. Algunos tipos de almacenamiento no permiten ciertas funciones. Por ejemplo, OneDrive no admite renombrar directorios, por lo que si lo intentas RClone dará un error explicando la razón.Seguridad
Hay que tener en cuenta que el ficherorclone.conf contiene todos los detalles para acceder a los datos de tu almacenamiento en la nube. Por tanto si alguien te lo roba podrá acceder a los mismos como si fueses tú mismo, por lo que tardarás tiempo en darte cuenta.Normalmente, los proveedores de almacenamiento en la nube detectan cuando un mismo acceso se está utilizando desde direcciones diferentes y probablemente te avisaría. Pero tampoco queremos llegar a este punto.
Para proteger los datos, RClone te permite cifrar el contenido del fichero de configuración. Para ello ejecutaremos de nuevo el comando
rclone configSi seleccionamos la opción "s" te pedirá la contraseña de cifrado.
Current remotes:
Name Type
==== ====
mi_disco_OneDrive onedrive
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> s
Your configuration is not encrypted.
If you add a password, you will protect your login information to cloud services.
a) Add Password
q) Quit to main menu
a/q> a
Enter NEW configuration password:
password:
Confirm NEW configuration password:
password:
Password set
Your configuration is encrypted.
c) Change Password
u) Unencrypt configuration
q) Quit to main menu
c/u/q>
A partir de ahora, cada vez que llames al comando rclone, éste te pedirá la contraseña.$ rclone lsd mi_disco_OneDrive:
Enter configuration password:
password:
-1 2018-08-27 18:03:44 0 Documentos
-1 2018-08-27 18:03:43 0 Imágenes
Esto puede ser un inconveniente si quieres realizar tareas automáticas. Para solucionar esto se utiliza la variable RCLONE_CONFIG_PASS. Si ésta está configurada RClone intentará descifrar la configuración con ella y, si falla, te pedirá la correcta.También puedes evitar que te pida contraseña si añades
--ask-password=false al final del comando.$ RCLONE_CONFIG_PASS=<password> rclone lsd mi_disco_OneDrive: --ask-password=false
-1 2018-08-27 18:03:44 0 Documentos
-1 2018-08-27 18:03:43 0 Imágenes
Si en algún momento necesitas eliminar el cifrado RClone también lo permite.




Hola!
ResponderEliminarHace tiempo que quiero probar este servicio. Este artículo es perfecto para dar el primer paso.
Muy bueno!
Saludos.
Te lo recomiendo, es muy fácil de instalar y de utilizar. En Windows y en Mac te permite no depender de herramientas de sincronización, que suelen consumir bastante memoria. Y en Linux, donde no hay casi ningún cliente de sincronización oficial, puedes integrar el almacenamiento en la nube de manera muy eficiente.
EliminarAh! y también hay cliente para Android. De él hablaré en otra entrada.