Rclone - Sincronizar directorios de archivos de diferentes almacenamiento en la nube


Rclone es un programa de línea de comandos escrito en diferentes proveedores de almacenamiento en la nube como: Amazon Drive, Amazon S3, Backblaze B2, Box, Ceph, DigitalOcean Spaces, Dropbox, FTP, Google Cloud Storage, Google Drive, etc.

Como ve, es compatible con múltiples plataformas, lo que lo convierte en una herramienta útil para sincronizar sus datos entre servidores o en un almacenamiento privado.

Rclone viene con las siguientes características

  • Comprueba el hash MD5/SHA1 en todo momento para garantizar la integridad de los archivos.
  • Las marcas de tiempo se conservan en los archivos.
  • Sincronizaciones parciales compatibles con archivos completos.
  • Modo de copia para archivos nuevos o modificados.
  • Sincronización unidireccional para que un directorio sea idéntico.
  • Modo de verificación: verificación de igualdad de hash.
  • Puede sincronizarse desde y hacia la red, por ejemplo, dos cuentas de nube diferentes.
  • (Cifrado) backend.
  • (Caché) backend.
  • (Unión) backend.
  • Montaje FUSE opcional (montaje rclone).

Cómo instalar rclone en sistemas Linux

La instalación de rclone se puede completar de dos formas diferentes. El más fácil es usar su secuencia de comandos de instalación, emitiendo el siguiente comando.

# curl https://rclone.org/install.sh | sudo bash

Lo que hace este script es verificar el tipo de sistema operativo en el que se ejecuta y descargar el archivo relacionado con ese sistema operativo. Luego extrae el archivo y copia el binario rclone en/usr/bin/rclone y otorga 755 permisos en el archivo.

Al final, cuando se complete la instalación, debería ver la siguiente línea:

Rclone v1.44 has successfully installed.
Now run “rclone config” for setup, Check https://rclone.org/docs/ for  more details.

La segunda forma de instalar rclone es emitiendo los siguientes comandos.

# curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip
# unzip rclone-current-linux-amd64.zip
# cd rclone-*-linux-amd64

Ahora copie el archivo binario y dele permisos de ejecución.

# cp rclone /usr/bin/
# chown root:root /usr/bin/rclone
# chmod 755 /usr/bin/rclone

Instale la página de manual de rclone.

# mkdir -p /usr/local/share/man/man1
# cp rclone.1 /usr/local/share/man/man1/
# mandb 

Cómo configurar rclone en sistemas Linux

A continuación, lo que tendrá que hacer es ejecutar la configuración de rclone para crear su archivo de configuración. Se utilizará para la autenticación para el uso futuro de rclone. Para ejecutar la configuración, ejecute el siguiente comando.

# rclone config

Verá el siguiente mensaje:

2018/11/13 11:39:58 NOTICE: Config file “/home/user/.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>

Las opciones son las siguientes:

  • n): crea una nueva conexión remota
  • s): establezca la protección con contraseña para su configuración
  • q) - salir de la configuración

Para el propósito de este tutorial, presione "n" y creemos una nueva conexión. Se le pedirá que le dé un nombre a la nueva conexión. Después de eso, se le pedirá que seleccione el tipo de almacenamiento que se configurará:

He nombrado por conexión "Google" y seleccioné "Google Drive", que está debajo del número 12. El resto de las preguntas puede responder simplemente dejando la respuesta predeterminada, que es un "" vacío.

Cuando se le solicite, puede seleccionar "autoconfig", que generará toda la información necesaria para conectarse a su Google Drive y otorgará permisos a rclone para usar los datos de Google Drive.

El proceso se parece a esto:

Google Application Client Secret - leave blank normally.
client_secret>
Scope that rclone should use when requesting access from drive.
Choose a number from below, or type in your own value
 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> 1
ID of the root folder - leave blank normally.  Fill in to access "Computers" folders. (see docs).
root_folder_id> 
Service Account Credentials JSON file path - needed only if you want use SA instead of interactive login.
service_account_file>
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
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...
Got code
Configure this as a team drive?
y) Yes
n) No
y/n> n
--------------------
[remote]
client_id = 
client_secret = 
scope = drive
root_folder_id = 
service_account_file =
token = {"access_token":"XXX","token_type":"Bearer","refresh_token":"XXX","expiry":"2018-11-13T11:57:58.955387075Z"}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y

Cómo utilizar rclone en sistemas Linux

Rclone tiene una lista bastante larga de opciones y comandos disponibles para usar. Intentaremos cubrir algunos de los más importantes:

# rclone lsd <remote-dir-name>:
# rclone copy source:sourcepath dest:destpath

Tenga en cuenta que si rclone encuentra duplicados, estos serán ignorados:

Si desea sincronizar algunos datos entre directorios, debe usar rclone con el comando sync.

El comando debería verse así:

# rclone sync source:path dest:path [flags]

En este caso, la fuente se sincroniza con el destino, ¡cambiando solo el destino! Este método omite archivos sin cambios. Dado que el comando puede provocar la pérdida de datos, puede utilizarlo con “–dry-run” para ver qué se copiará y eliminará exactamente.

Para mover datos, puede usar rclone con el comando move. El comando debería verse así:

# rclone move source:path dest:path [flags]

El contenido de la fuente se moverá (eliminará) y se colocará en el destino seleccionado.

Para crear un directorio en destino.

# rclone mkdir remote:path

Para eliminar un directorio.

# rclone rmdir remote:path

Compruebe si los archivos de origen y destino coinciden:

# rclone check source:path dest:path

Borrar archivos:

# rclone delete remote:path

Cada uno de los comandos de rclone se puede usar con diferentes banderas e incluye su propio menú de ayuda. Por ejemplo, puede realizar una eliminación selectiva utilizando la opción de eliminación. Supongamos que desea eliminar archivos de más de 100 M, el comando se vería así.

# rclone --min-size 100M delete remote:path

Es muy recomendable revisar el manual y la ayuda de cada comando para aprovechar al máximo rclone. La documentación completa de rclone está disponible en: https://rclone.org/

rclone es una poderosa utilidad de línea de comandos para ayudarlo a administrar datos entre diferentes proveedores de almacenamiento en la nube. Si bien en este artículo hemos arañado solo la superficie de las capacidades de rclone, hay mucho más que lograr con él, especialmente cuando se usa en combinación con el servicio cron (por ejemplo).