Rclone

De La Wiki de KiVi

Rclone es un programa GPL gratuito que se ejecuta por líneas de comandos para sincronizar, copiar o montar servicios en la nube como  Amazon, Google Drive, MEGA, Dropbox o Nextcloud entre otros.

Instalación

Para realizar la instalación lo podemos hacer desde un solo comando con:

sudo -v ; curl https://rclone.org/install.sh | sudo bash

Esto descarga el programa y valida el usuario actual como «root».

Ahora el programa ya está instalado y se puede configurar.

Configuración

Para realizar una conexión primero tenemos que configurar el servicio al que nos conectaremos, para eso, ejecutamos como usuario ( o root si ha de ser permanente ):

rclone config

Como es la primera vez que se ejecuta, nos mostrará:

No remotes found, make a new one?

n) New remote

s) Set configuration password

q) Quit config

n/s/q>

Para comenzar, crearemos una nueva conexión con la tecla «n«:

Nos pedirá un nombre o etiqueta para la nueva conexión:

name>

Le pondremos, por ejemplo «DriveDocuments», con la intención de montar una unidad de GoogleDrive.:

name> DriveDocuments

A continuación se listarán todas las opciones disponibles:

Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
 1 / 1Fichier
   \ (fichier)
 2 / Akamai NetStorage
   \ (netstorage)
 3 / Alias for an existing remote
   \ (alias)
 4 / Amazon Drive
   \ (amazon cloud drive)
 5 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, ArvanCloud, Ceph, China Mobile, Cloudflare, GCS, DigitalOcean, Dreamhost, Huawei OBS, IBM COS, IDrive e2, IONOS Cloud, Leviia, Liara, Lyve Cloud, Minio, Netease, Petabox, RackCorp, Scaleway, SeaweedFS, StackPath, Storj, Synology, Tencent COS, Qiniu and Wasabi
   \ (s3)
 6 / Backblaze B2
   \ (b2)
 7 / Better checksums for other remotes
   \ (hasher)
 8 / Box
   \ (box)
 9 / Cache a remote
   \ (cache)
10 / Citrix Sharefile
   \ (sharefile)
11 / Combine several remotes into one
   \ (combine)
12 / Compress a remote
   \ (compress)
13 / Dropbox
   \ (dropbox)
14 / Encrypt/Decrypt a remote
   \ (crypt)
15 / Enterprise File Fabric
   \ (filefabric)
16 / FTP
   \ (ftp)
17 / Google Cloud Storage (this is not Google Drive)
   \ (google cloud storage)
18 / Google Drive
   \ (drive)
19 / Google Photos
   \ (google photos)
20 / HTTP
   \ (http)
21 / Hadoop distributed file system
   \ (hdfs)
22 / HiDrive
   \ (hidrive)
23 / In memory object storage system.
   \ (memory)
24 / Internet Archive
   \ (internetarchive)
25 / Jottacloud
   \ (jottacloud)
26 / Koofr, Digi Storage and other Koofr-compatible storage providers
   \ (koofr)
27 / Local Disk
   \ (local)
28 / Mail.ru Cloud
   \ (mailru)
29 / Mega
   \ (mega)
30 / Microsoft Azure Blob Storage
   \ (azureblob)
31 / Microsoft OneDrive
   \ (onedrive)
32 / OpenDrive
   \ (opendrive)
33 / OpenStack Swift (Rackspace Cloud Files, Blomp Cloud Storage, Memset Memstore, OVH)
   \ (swift)
34 / Oracle Cloud Infrastructure Object Storage
   \ (oracleobjectstorage)
35 / Pcloud
   \ (pcloud)
36 / PikPak
   \ (pikpak)
37 / Proton Drive
   \ (protondrive)
38 / Put.io
   \ (putio)
39 / QingCloud Object Storage
   \ (qingstor)
40 / Quatrix by Maytech
   \ (quatrix)
41 / SMB / CIFS
   \ (smb)
42 / SSH/SFTP
   \ (sftp)
43 / Sia Decentralized Cloud
   \ (sia)
44 / Storj Decentralized Cloud Storage
   \ (storj)
45 / Sugarsync
   \ (sugarsync)
46 / Transparently chunk/split large files
   \ (chunker)
47 / Union merges the contents of several upstream fs
   \ (union)
48 / Uptobox
   \ (uptobox)
49 / WebDAV
   \ (webdav)
50 / Yandex Disk
   \ (yandex)
51 / Zoho
   \ (zoho)
52 / premiumize.me
   \ (premiumizeme)
53 / seafile
   \ (seafile)
Storage> 

Para seleccionar la conexión solo hay que escribir el número del tipo de conexión, en este ejemplo, el número 18 y dejaremos las siguientes dos opciones siguientes ( client_id y client_secret ) vacias:

Storage> 18

Option client_id.
Google Application Client Id
Setting your own is recommended.
See https://rclone.org/drive/#making-your-own-client-id for how to create your own.
If you leave this blank, it will use an internal key which is low performance.
Enter a value. Press Enter to leave empty.
client_id> 

Option client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_secret> 

Y ya tendremos las opciones de conexión a Google Drive:

Scope that rclone should use when requesting access from drive.
Choose a number from below, or type in your own value.
Press Enter to leave empty.
 1 / Full access all files, excluding Application Data Folder.
   \ (drive)
 2 / Read-only access to file metadata and file contents.
   \ (drive.readonly)
   / Access to files created by rclone only.
 3 | These are visible in the drive website.
   | File authorization is revoked when the user deauthorizes the app.
   \ (drive.file)
   / Allows read and write access to the Application Data folder.
 4 | This is not visible in the drive website.
   \ (drive.appfolder)
   / Allows read-only access to file metadata but
 5 | does not allow any access to read or download file content.
   \ (drive.metadata.readonly)
scope> 

Entre estas opciones, la primera nos permite tener total acceso al directorio de Google Drive, por ejemplo un directorio compartido.

En el siguiente paso nos pedirá seguir con opciones avanzadas y diremos que no:

Edit advanced config? (y/n)
y) Yes
n) No
y/n> n

Seguiremos y nos pedirá acceder al toker, es decir, la llave de confianza entre el cliente y el servicio.

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

Si no trabajamos desde el mismo equipo, le daremos a la opción «No» para que nos dé un enlace web, copiarlo y pegarlo en otro equipo para así continuar.

Acabado este paso nos pedirá si queremos aceptar los cambios, editarlos o eliminarlos, continuaremos con «y»:

y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y

Y nos listará la conexión acabada dando de nuevo las opciones principales:

Current remotes:

Name                 Type
====                 ====
DriveDocuments       Google Drive 

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

Podemos comprobar la conexión listando el contenido de la conexión de nuestro ejemplo con:

rclone ls DriveDocuments:/

Sincronizando

Una de tantas opciones que tenemos ahora nos permite sincronizar entre nuestro equipo y el destino, por ejemplo, vamos a sincronizar un directorio local con el directorio remoto:

rclone sync -P -L /srv/data DriveDocuments:/

En este ejemplo sincronizaremos el contenido de «/srv/data» a la raíz del «Drive» y mostrará el progreso ( «-P» ) y evitará los enlaces ( «-L» ).

Obviamente, para hacer la sincronización de descarga desde el punto remoto al directorio local solo hay que invertir el directorio de origen por el de destino, por ejemplo:

rclone sync -P -L DriveDocuments:/ /srv/data

Montado y persistencia

Ahora demos el caso que queremos que se monte el directorio remoto al directorio local y así tener acceso directo, para eso podemos ejecutar ( y siguiendo el ejemplo anterior ):

rclone mount DriveDocuments:/ /mnt/data

Obviamente, el directorio de montado ya debería existir.

Y lo podemos persistir en cada inicio de sistema con añadiendo al fichero «/etc/fstab«:

sftp1:subdir /mnt/data rclone rw,noauto,nofail,_netdev,x-systemd.automount,args2env,vfs_cache_mode=writes,config=/etc/rclone.conf,cache_dir=/var/cache/rclone 0 0

Con esto, en cada inicio de sistema y siempre que tenga conexión a internet, se realizan todos los puntos de configurados en rclone.

También podemos realizar otras formas, por ejemplo, con systemctl, una tarea de inicio con crontab…

Esto solo es un ejemplo muy sencillo de lo que podemos hacer con este programa, podemos encontrar mucha más información en la web oficial.