Una de las mejores herramientas para hacer respaldo en Linux es rsync sin embargo estamos limitados a respaldos locales, en discos externos o a un servidor remoto por ssh ¿Pero qué pasa si queremos respaldar en la nube? ¿En cual? Buenos existe una herramienta similar a rsync con una sintaxis similar para poder respaldar en Google Drive, Dropbox, Microsoft One e incluso Amazon S3 entre muchos otros y se llama rclone.

Lo mejor es que tiene una sintaxis similar, permite copiar o sincronizar en espejo de la misma forma que rsync, si bien en un principio es algo complicado de configurar y es algo lento cuando son muchos archivos pequeños es una excelente alternativa para respaldar de forma automática.

Por supuesto que hay que tener cuidado que se sube a la nube, sin embargo hay archivos que si bien son privados no son críticos en cuanto a seguridad sin embargo el perderos por no tenerlo respaldado si seria un problema grave.

O quizás ya están en la nube y necesitamos respaldar los de forma local, existen muchas situaciones en donde es útil una herramienta así, lo importante es que ser cuidadoso en el manejo de la seguridad de la cuenta.

¿Que nubes soporta?

1Fichier
Alibaba Cloud (Aliyun) Object Storage System (OSS)
Amazon Drive (See note)
Amazon S3
Backblaze B2
Box
Ceph
Citrix ShareFile
C14
DigitalOcean Spaces
Dreamhost
Dropbox
FTP
Google Cloud Storage
Google Drive
Google Photos
HTTP
Hubic
Jottacloud
IBM COS S3
Koofr
Mail.ru Cloud
Memset Memstore
Mega
Microsoft Azure Blob Storage
Microsoft OneDrive
Minio
Nextcloud
OVH
OpenDrive
Openstack Swift
Oracle Cloud Storage
ownCloud
pCloud
premiumize.me
put.io
QingStor
Rackspace Cloud Files
rsync.net
Scaleway
SFTP
Wasabi
WebDAV
Yandex Disk
The local filesystem

Instalación

Desde la pagina del desarrollador se de distribuyen varios instaladores para Linux, Windows, MacOS entre otros

Debian/Ubuntu

Para instalad debemos descargar el archivo .deb e instalarlo con dpkg

wget https://downloads.rclone.org/v1.51.0/rclone-v1.51.0-linux-amd64.deb
dpkg -i rclone-v1.51.0-linux-amd64.deb

Fedora/CentOS/RHEL

En el caso de la familia RHEL descargamos el .rpm y lo instalamos con rpm valga la redundancia

wget https://downloads.rclone.org/v1.51.0/rclone-v1.51.0-linux-amd64.rpm
rpm -iUvh rclone-v1.51.0-linux-amd64.rpm

Windows

En Windows tambien existe un instalador que puedes descargar desde:

https://downloads.rclone.org/v1.51.0/rclone-v1.51.0-windows-amd64.zip

Configuración

Ejecutamos rclone config y respondemos con n para crear un nuevo registro

rclone config
2020/03/13 20:49:55 NOTICE: Config file "/home/alvaro/.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

Luego preguntara un nombre para el perfil, le asignamos uno y luego nos preguntara el servicio que queremos configurar:

Choose a number from below, or type in your own value
 1 / 1Fichier
   \ "fichier"
 2 / Alias for an existing remote
   \ "alias"
 3 / Amazon Drive
   \ "amazon cloud drive"
 4 / Amazon S3 Compliant Storage Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, etc)
   \ "s3"
 5 / Backblaze B2
   \ "b2"
 6 / Box
   \ "box"
 7 / Cache a remote
   \ "cache"
 8 / Citrix Sharefile
   \ "sharefile"
 9 / Dropbox
   \ "dropbox"
10 / Encrypt/Decrypt a remote
   \ "crypt"
11 / FTP Connection
   \ "ftp"
12 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
13 / Google Drive
   \ "drive"
14 / Google Photos
   \ "google photos"
15 / Hubic
   \ "hubic"
16 / In memory object storage system.
   \ "memory"
17 / JottaCloud
   \ "jottacloud"
18 / Koofr
   \ "koofr"
19 / Local Disk
   \ "local"
20 / Mail.ru Cloud
   \ "mailru"
21 / Mega
   \ "mega"
22 / Microsoft Azure Blob Storage
   \ "azureblob"
23 / Microsoft OneDrive
   \ "onedrive"
24 / OpenDrive
   \ "opendrive"
25 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
26 / Pcloud
   \ "pcloud"
27 / Put.io
   \ "putio"
28 / QingCloud Object Storage
   \ "qingstor"
29 / SSH/SFTP Connection
   \ "sftp"
30 / Sugarsync
   \ "sugarsync"
31 / Transparently chunk/split large files
   \ "chunker"
32 / Union merges the contents of several remotes
   \ "union"
33 / Webdav
   \ "webdav"
34 / Yandex Disk
   \ "yandex"
35 / http Connection
   \ "http"
36 / premiumize.me
   \ "premiumizeme"
Storage>
** See help for drive backend at: https://rclone.org/drive/ **

Por ejemplo para Google Drive escribimos 13, solo en este caso, en otros sistemas la lista puede ser diferente y el numero puede cambiar:

Storage> 13
** See help for drive backend at: https://rclone.org/drive/ **

Luego preguntara por client_id y lo dejamos en blanco client_secret también, luego preguntara por el scope:

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> 

Aqui les recomiendo, la opción 1, luego en Edit advanced config? respondemos n y en Use auto config? respondemos y

ID of the root folder
Leave blank normally.
Fill in to access "Computers" folders. (see docs).
Enter a string value. Press Enter for the default ("").
root_folder_id> 
Service Account Credentials JSON file path 
Leave blank normally.
Needed only if you want use SA instead of interactive login.
Enter a string value. Press Enter for the default ("").
service_account_file> 
Edit advanced config? (y/n)
y) Yes
n) No
y/n> n
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...

Eso nos abrirá el navegador para que otrogemos permisos:

En la siguiente imagen nos informa que el permiso fue otorgado

Una vez que recibamos la confirmación como la ultima captura captura, en la consola nos hará la siguiente pregunta donde respondemos 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> 

En las 2 siguientes preguntas reponderemos primero y para confirmar y luego q para salir:

etching team drive list...
No team drives found in your account--------------------
[drive]
scope = drive
token = {"access_token":"#############################################################################################################################
#####################################","token_type":"Bearer","refresh_token":"#######################################################################################################","expiry":"2020-03-13T19:11:19.090363985-03:00"}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
Current remotes:

Name                 Type
====                 ====
drive                drive
dropbox              dropbox


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

 

Sincronización

Para copiar y sincronizar tenemos disponibles dos comandos diferentes sync y copy ,la diferencia fundamental es que copy funciona como el comando de copiado tradicional mientras que sync permite copiar solo los archivos que cambiaron e incluso eliminar del destino los archivos que se hayan eliminado en origen, una función que permite realizar copias espejo.

Copy

La primera forma es el comando copy, nos permite copiar un archivo desde el local a la nube, de la nube a la computadora local o desde una nube a otra.

Copiamos la carpeta local docs a la nube de drive:

rclone copy ./docs drive:proyecto/docs/

En caso inverso copiamos nuestra pc la carpeta docs que ya tenemos en la nube:

rclone copy drive:proyecto/docs/ ./docs

Tambien podemos copiar archivos individuales y copiarlos dentro de una carpeta:

rclone copy drive:proyecto/backup.tar.gz dropbox:proyecto/backups/

Una función bastante mas interesante es la posiblidad de copiar entre dos nubes:

rclone copy drive:proyecto/docs/ dropbox:proyecto/docs/

Sync

La sintaxis de sync es similar a la de copiar aunque la funcionalidad es diferente, no solo copia los archivos nuevos sino que ademas elimina de destino los que ya no estén en origen:

rclone sync drive:proyecto/docs/ dropbox:proyecto/docs/

La ventaja de sync es que es mas rápido ya que solo copia los archivos que hayan cambiados y permite que la copia de destino sea exactamente igual a la de origen, ni un archivo mas ni un archivo menos, ideal para respaldo.

Otros comandos de interés

Listar las nubes agregadas

Un comando util es listremotes que nos mostrara las nubes que tengamos agradadas junto con el nombre de cada una, ideal para recordar cuando tenemos varias

rclone listremotes

Tamaño de una carpeta

El argumento size nos permite saber cuando pesa una carpeta o toda la nube, la sintaxis es muy sencilla.

alvaro@acer:~$ rclone size drive:
Total objects: 174
Total size: 57.775 GBytes (62035057378 Bytes)
alvaro@acer:~$ rclone size drive:MULTIMEDIA
Total objects: 80
Total size: 34.004 GBytes (36511681029 Bytes)

Comandos para listar

El primer comando nos permite ver todos los archivos y sub-carpetas junto con el tamaño en bytes

rclone ls drive:
rclone ls drive:MULTIMEDIA/

El segundo nos mostrara solo las fecha y hora solo de las carpetas sin los archivos y solo de las se ese directorio y no de los sub-directorios:

rclone lsd drive:carpeta

Solo lista directorios del directorio indicado sin incluir subs como ls y sin mostrar tamaño ni fecha, solo muestra el nombre

rclone lsf unidad_creada:carpeta

Ver espacio de archivos y carpetas

Este comando es muy similar al comando ncdu de Linux y es sumamente cómodo para ver el tamaño de cada archivo y carpeta y navegar por el árbol de directorios

rclone ncdu drive:

Limpiar papelera de Drive

Acá viene un comando realmente util y es el de vaciar la papelera, por ejemplo en Drive cada vez que se actualiza elimina un archivo va a parar a la papelera por lo que es util vaciarla para no desperdiciar espacio

rclone cleanup drive:

Crear carpetas

Otro comando util es el crear carpetas, interesante por ejemplo cuando se crea un script automatizar respaldos y crear el directorio directamente en la nube:

rclone mkdir drive:fotos/viaje

Mover un Archivos y Carpetas

Comando que permite mover archivos o carpetas dentro de la misma nube entre dos servicios diferentes:

rclone moveto drive:carpeta/ dropbox:carpeta/

Mas comandos utiles

alvaro@acer:~$ rclone -h

Rclone syncs files to and from cloud storage providers as well as
mounting them, listing them in lots of different ways.

See the home page (https://rclone.org/) for installation, usage,
documentation, changelog and configuration walkthroughs.

Usage:
  rclone [flags]
  rclone [command]

Available Commands:
  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
  copyurl         Copy url content to dest.
  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 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            Show help for rclone commands, flags and backends.
  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 file system on a mountpoint.
  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.
  rcd             Run rclone listening to remote control commands only.
  rmdir           Remove the path if empty.
  rmdirs          Remove empty directories under the path.
  serve           Serve a remote over a protocol.
  settier         Changes storage class/tier of objects in remote.
  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.

Use "rclone [command] --help" for more information about a command.
Use "rclone help flags" for to see the global flags.
Use "rclone help backends" for a list of supported services.

Conclusión

En resumen rclone es una herramienta sumamente util para sincronizar archivos entre un pc y los diferentes servicios que soporta e incluso que permite inter-conectar diferentes servicios si y todo con una sintaxis sumamente familiar como es la de rsync y agregando funciones apara administrar y manipular los archivos directamente en la nube, una herramienta que realmente vale la pena probar.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *