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.
Administrador de Sistemas, Programador, Docente y ahora resulta que también Blogger (peor es ser tictoker). Más de 20 años de experiencia en computación atendiendo nabos y resolviendo problemas, los cuales si no fuera por estos nabos, no habrían ocurrido en primer lugar. Escribo más que nada sobre tecnología y herramientas en general, además de algunos artículos con opiniones tan subjetivas como irrelevantes, así que si no te gustan, mejor madura y superalo.