Tarea 1: Instala rclone en tu equipo.
Lo primero será instalar el paquete rclone en nuestro equipo. Para ello, ejecutaremos el comando (con permisos de administrador, ejecutando el comando su -
):
Listo. Así de sencillo es tener instalado el paquete.
Tarea 2: Configura dos proveedores cloud en rclone.
En este caso, he decidido usar Dropbox y Google Drive, posiblemente los más conocidos, así que vamos a proceder a configurarlos. Para ello, ejecutaremos el comando:
Como se puede apreciar, nos informa de que no ha encontrado ningún fichero de configuración existente con anterioridad, así que ha generado uno nuevo. Nos está solicitando una opción, así que para agregar un nuevo servicio, pulsaremos la letra n.
Tras ello, nos estará pidiendo un nombre para identificar el servicio de forma única en rclone. Dado que el primero que voy a configurar es Dropbox, voy a nombrarlo Dropbox.
El siguiente paso será seleccionar el tipo de servicio que queremos utilizar. En este caso, tras buscar en la lista, podemos escribir dropbox o introducir el número 8, pues ambos apuntan al mismo servicio.
Tras elegir el tipo de servicio, nos devuelve un enlace a la documentación en el que muestra cómo configurar el servicio en cuestión. Además, nos está preguntando por el client_id (referente a OAuth), que en nuestro caso lo dejaremos vacío, ya que no vamos a usar ese tipo de autentificación.
Dado que no vamos a usar OAuth para la autentificación, y por tanto, no hemos especificado ningún client_id, tampoco será necesario especificar un client_secret. Procedemos sin introducir nada.
En este caso, no vamos a utilizar ningún tipo de configuración avanzada, pues no será necesario para el uso básico que vamos a darle a rclone, así que introduciremos una n.
Ahora debemos elegir si queremos usar la auto-configuración o vamos a configurarlo para otra máquina (en caso de que estemos en remoto). En este caso, como quiero configurar rclone para el equipo local, tendremos que elegir la opción y.
Tras ello, nuestro navegador se debería abrir automáticamente redirigiendo al enlace que nos ha mostrado. En caso de que no sea así (como en mi caso), abriremos de forma manual el enlace que nos muestra, para terminar de configurar el servicio.
Lógicamente nos pedirá nuestras credenciales para poder autorizar a la aplicación externa (rclone) a usar nuestra cuenta de Dropbox a través de la API. Introduciremos nuestras credenciales de forma totalmente segura, pues esta información no llega en ningún momento a rclone.
Se nos mostrarán dos botones, uno para Cancelar la operación y otro para Permitir que rclone tenga acceso a los archivos y carpetas de Dropbox, tal y como se muestra en el mensaje.
Tras permitir la operación nos dirá que el proceso ha sido exitoso y ya podemos volver a rclone.
La terminal nos ha devuelto un access_token, que en este caso he censurado por seguridad y algunos parámetros más. Simplemente, tendremos que aceptar la conexión introduciendo la opción y.
Genial. Nuestra primera conexión con un servicio ha sido realizada y ya nos aparece en la lista, pero todavía nos queda por configurar Google Drive. Para ello, volveremos a introducir la opción n para configurar un nuevo servicio.
Dado que ya hemos explicado cómo se configura el primer servicio, no es necesario volver a hacerlo, hasta que haya alguna diferencia entre la configuración de ambos.
Considero necesario hacer una pausa en este punto ya que es diferente con respecto al proveedor anterior. En este caso, nos da la libertad de elegir qué nivel de privilegios queremos darle a rclone, siendo 1 el más prioritario (acceso a todos los ficheros) y 5 el menos prioritario (acceso únicamente a los metadatos). En mi caso, para poder mostrar bien cómo funciona el software, voy a darle todos los privilegios (1).
En caso de tener activada en Google Drive la sincronización automática con ordenadores, los ficheros de éstos se encuentran en un apartado distinto, llamado “Computers”. Si se quisiese acceder a los mismos, habría que introducir el root_folder_id. En mi caso, no tengo dicha funcionalidad activada, así que lo dejaré vacío.
En cuanto al service_account_file, tampoco es necesario, dado que vamos a hacer uso del login interactivo, por lo que lo dejaré vacío. A partir de ahora, la parte final del proceso es exactamente igual que en el proveedor anterior.
Tal y como se puede apreciar en la lista, ambos proveedores se encuentran ya añadidos a rclone, por lo que podremos introducir la opción q para salir de la configuración de rclone.
Tarea 3: Muestra distintos comandos de rclone para gestionar los ficheros de los proveedores cloud.
Antes de empezar, me gustaría dejar clara la estructura de ficheros que tengo en cada proveedor:
Las funcionalidades de rclone que vamos a tratar son:
- Listar ficheros.
- Copiar ficheros locales a la nube.
- Copiar directorios locales a la nube.
- Copiar ficheros entre proveedores.
- Obtener información sobre la cuota.
- Eliminar ficheros/directorios.
- Copiar stdin a un fichero remoto.
- Sincronizar directorios.
- Vista de árbol (tree).
- Crear directorios remotos.
- Montar directorios remotos en local.
Listar ficheros
La sintaxis de rclone para listar los ficheros/directorios existentes es:
En este caso, para que me muestre todo lo que tengo almacenado en el directorio raíz del proveedor, no especificaré nada en la ruta.
Drive
Dropbox
Como se puede apreciar, la estructura devuelta por ambos proveedores coincide con la que he mencionado antes de comenzar.
Copiar fichero local a la nube
La sintaxis de rclone para copiar un fichero local a la nube es:
Esta sintaxis es genérica, y sirve tanto para copiar un fichero/directorio local a la nube, para copiar un fichero/directorio de un proveedor a otro y para copiar un fichero/directorio que está en la nube a nuestra máquina local.
Drive
En este caso, voy a generar un fichero con un texto en su interior para posteriormente subirlo a la nube y verificar si mantiene sus propiedades. Para ello, ejecutaré el comando:
Tras ello, lo copiaré a la nube, en el directorio raíz (por lo que no hay que especificar ruta):
Para ver si el archivo se ha generado correctamente y el contenido en su interior es legible, iremos a Google Drive.
Efectivamente, así ha sido.
Dropbox
En este caso, voy a repetir el mismo ejemplo que en Google Drive. Para ello, ejecutaré el comando:
Tras ello, lo copiaré a la nube, en el directorio raíz (por lo que no hay que especificar ruta):
Para ver si el archivo se ha generado correctamente y el contenido en su interior es legible, iremos a Dropbox.
Efectivamente, así ha sido.
Copiar un directorio local a un directorio en la nube
La sintaxis de rclone para copiar un directorio local a otro directorio en la nube es:
Como he mencionado en la tarea anterior, ésta sintaxis es genérica.
Drive
En este caso, he metido algunas capturas de anteriores prácticas en el directorio ~/Imágenes/, así que vamos a probar a subir todo el directorio a Google Drive, a una carpeta dentro del mismo que se llame Capturas/ (esa será la ruta en este caso).
Tras ello, iremos a Google Drive a comprobar si el directorio y todo su contenido se ha copiado correctamente en un directorio de nombre Capturas/ dentro de Google Drive.
Efectivamente, todas las capturas han sido subidas (aunque en la captura únicamente se vean las 6 primeras).
Dropbox
Llegado este punto, tenía curiosidad por probar algo. Dado que la tarea fue realizada sobre una máquina virtual totalmente virgen y las cuentas tanto de Dropbox como de Google Drive eran nuevas y únicamente usadas para esta práctica, quise probar si sería posible copiar todo el directorio personal (/home/alvaro) en Dropbox, dentro de un directorio que se llame Personal/ (esa será la ruta en este caso).
Tras un buen rato esperando y algunos errores debidos a ficheros protegidos, iremos a Dropbox para comprobar si el directorio y el contenido se ha copiado correctamente en un directorio de nombre Personal/ dentro de Dropbox.
Efectivamente, rclone ha sido capaz de copiar la mayoría de los ficheros y directorios dentro de Dropbox. Es importante mencionar que esto es una prueba simplemente y que se ha realizado bajo un escenario totalmente seguro, sin que ningún tipo de información haya podido ser comprometida. No es nada seguro hacer esto con el directorio personal de la máquina común, así que como dicen en la tele, no intentes esto en casa.
Copiar ficheros entre los dos proveedores cloud
La sintaxis de rclone para copiar ficheros entre dos proveedores en la nube es:
Como se ha mencionado en las tareas anteriores, ésta sintaxis es genérica.
Drive
En este caso, supongamos que necesitamos copiar el directorio Capturas/ actualmente existente en Drive a Dropbox, a una carpeta del mismo nombre, es decir, Capturas/. En este caso, la ruta del proveedor origen será Capturas/ y la ruta del proveedor destino, también será Capturas/.
Tras ello, iremos a Dropbox a verificar que el proceso se ha completado correctamente.
Tal y como era de esperar, todas las capturas se han copiado de un proveedor a otro (aunque en la captura únicamente se vean las 3 primeras).
Dropbox
Para el caso de Dropbox, vamos a copiar el archivo ComandosLinux.odt a Drive, al directorio raíz. En este caso, la ruta del proveedor origen será el fichero ComandosLinux.odt y para el proveedor destino, no tendremos que especificar ninguna ruta.
Tras ello, iremos a Google Drive a verificar que el proceso se ha completado correctamente.
Tal y como era de esperar, el fichero se ha copiado correctamente de un proveedor a otro.
Obtener información sobre la cuota
La sintaxis de rclone para obtener información sobre la cuota de un proveedor es:
En caso de poner –json al final, nos lo devolvería en formato JSON.
Drive
En este caso, tenemos un total de 15GB disponibles para almacenamiento de Google, de los cuales en este caso, quedan disponibles 12.2GB, pues en los archivos hay un total de 2.37GB, en la papelera 182KB y en otros servicios de Google, un total de 426MB.
Esta funcionalidad de rclone puede ser bastante útil para hacer cierto tipo de scripts, como por ejemplo para que te envíe un correo electrónico cuando te queden menos de X GB libres o que borre ciertos ficheros en caso de que quede poco espacio. Todo es usar la imaginación.
Dropbox
En este caso, tenemos un total de 2GB disponibles, de los cuales en este caso, quedan disponibles 1.84GB, pues en los archivos hay un total de 161MB. Como se puede apreciar, Drive muestra más información al respecto, como por ejemplo el tamaño de los archivos que hay en la papelera.
Eliminar ficheros/directorios
La sintaxis de rclone para eliminar ficheros de un proveedor es:
En caso de poner –min-size (tamaño) después de rclone, podremos eliminar únicamente aquellos que pesen más del tamaño introducido.
La sintaxis de rclone para eliminar directorios de un proveedor es:
Drive
En este caso, vamos a probar a eliminar el fichero de nombre 20200415_205255.mp4, pues es un vídeo y queremos hacer limpieza para conseguir más espacio libre. En este caso, tendríamos que usar el comando delete
sobre el fichero en cuestión, pero en lugar de especificar directamente el nombre, vamos a borrar aquellos ficheros que superen los 500MB de tamaño (dado que no tengo más ficheros de ese tamaño, únicamente va a pillar el vídeo, pero si hubiese más, cogería todos aquellos que superen los 500MB).
Para verificar que la eliminación de dicho fichero se ha llevado a cabo correctamente, vamos a entrar a la Papelera de Google Drive.
Como era de esperar, el vídeo ha sido eliminado correctamente.
Dropbox
A diferencia del caso anterior, ahora lo que vamos a eliminar es un directorio por completo, por lo que no podemos usar la opción delete
, ya que lo que haríamos sería borrar los ficheros que se encuentran dentro del mismo, y lo que queremos es eliminarlo en su totalidad. Para ello, haremos uso de la opción purge
. La ruta del proveedor en este caso sería Personal/, puesto que es el directorio que queremos eliminar.
Para verificar que la eliminación de dicho directorio se ha llevado a cabo correctamente, vamos a entrar a la Papelera de Dropbox.
Como era de esperar, el directorio ha sido eliminado correctamente.
Copiar stdin a un fichero remoto
La sintaxis de rclone para plasmar la entrada estándar en un fichero de un proveedor es:
Drive
En este caso, imaginemos que quiero subir la salida del comando lsblk -f
en un fichero de nombre lsblk.txt en el proveedor de cloud. Si no existiese esta opción, el procedimiento sería volcar la salida de la ejecución del comando a un fichero para posteriormente subirlo al cloud. Gracias a esto, esta tarea se convierte en algo mucho más sencillo.
Para verificar que dicho fichero se ha generado correctamente y el contenido es el que queremos, voy a ir a Google Drive para verificarlo.
Efectivamente, el fichero se encuentra generado y contiene la salida del comando lsblk -f
.
Dropbox
Del mismo modo que en el ejemplo anterior, vamos a ejecutar otro comando, por ejemplo ls -l
y vamos a subir la salida de dicho comando a Dropbox, en un fichero de nombre ls.txt.
Para verificar que dicho fichero se ha generado correctamente y el contenido es el que queremos, voy a ir a Dropbox para verificarlo.
Efectivamente, el fichero se encuentra generado y contiene la salida del comando ls -l
.
Sincronizar directorios
La sintaxis de rclone para sincronizar un directorio local y un directorio de un proveedor es:
Es importante mencionar que donde se van a realizar las modificaciones para llevar a cabo la sincronización es en el directorio remoto, el local se queda intacto. En resumen, lo que hace es igualar ambos directorios pero únicamente teniendo en cuentas las modificaciones (de manera que si queremos sincronizar un directorio muy grande no sea necesario eliminar todo el contenido y volverlo a subir, sino únicamente ver qué modificaciones se han llevado a cabo y copiarlas en el remoto). Es aconsejable usar la opción -i en caso de no estar seguro.
Drive
En este caso, supongamos que quiero eliminar las 9 primeras capturas del directorio Capturas/, para posteriormente sincronizarlo con el remoto. Para ello, lo primero que tendremos que hacer será eliminar dichos ficheros:
Tras ello, ya podremos ejecutar el comando para que se lleve a cabo la sincronización con la ruta Capturas/ del proveedor.
Para verificar que dichas 9 capturas también se han eliminado del directorio remoto, vamos a acceder al directorio de Google Drive.
Efectivamente, ahora la primera captura que se muestra es 10.png, por lo tanto, las 9 primeras han sido eliminadas.
Dropbox
Vamos a repetir la misma operación en Dropbox, pero esta vez, en lugar de eliminar las 9 primeras capturas, vamos a eliminar todas aquellas que se nombren con números. Para ello, lo primero que tendremos que hacer será eliminar dichos ficheros:
Tras ello, ya podremos ejecutar el comando para que se lleve a cabo la sincronización, con la ruta Capturas/ del proveedor.
Para verificar que dichas capturas también se han eliminado del directorio remoto, vamos a acceder al directorio de Dropbox.
Efectivamente, todas las capturas nombradas con números han sido eliminadas del directorio remoto.
Vista de árbol (tree)
La sintaxis de rclone para ver en forma de árbol la estructura de ficheros y directorios de un proveedor es:
Drive
En este caso, voy a listar en forma de árbol absolutamente todo el contenido de mi Google Drive, dejando para ello la ruta vacía, así empezará a listar desde el directorio raíz.
Dropbox
Al igual que en el caso anterior, voy a listar todo el contenido de mi Dropbox, dejando para ello la ruta vacía, así empezará a listar desde el directorio raíz.
Crear directorio
La sintaxis de rclone para crear un directorio vacío en un proveedor es:
En este caso, vamos a generar un directorio llamado Pruebasync/ en cada uno de los proveedores, que nos servirán para la siguiente tarea.
Drive
Para verificar que se ha generado correctamente, accederé a Google Drive.
Dropbox
Para verificar que se ha generado correctamente, accederé a Dropbox.
Efectivamente, el directorio vacío ha sido correctamente generado en ambos proveedores.
Tarea 4: Monta en un directorio local de tu ordenador, los ficheros de un proveedor cloud. Comprueba que copiando o borrando ficheros en este directorio se crean o eliminan en el proveedor.
Lo primero que tendremos que hacer será crear dos directorios locales donde montaremos los directorios del proveedor cloud. En este casó, lo haré dentro de /mnt/. El comando a ejecutar sería:
Tras ello, tendremos que hacer uso de la siguiente sintaxis para montar directorios remotos:
Gracias al & del final, conseguiremos ejecutar el proceso en background para así no bloquear la terminal actual. En este caso, voy a montar ambos directorios remotos Pruebasync/ en las correspondientes rutas locales. Para ello, ejecutamos los comandos:
Una vez montados los directorios remotos, ya podemos empezar a trabajar con los mismos. Por ejemplo voy a crear ficheros de nombre 1.txt hasta 10.txt dentro del directorio /mnt/drive/ y ficheros de nombre 1.txt hasta 20.txt dentro del directorio /mnt/dropbox/. Para ello, ejecutaremos los comandos:
Los ficheros están generados, pero ahora queda ver si se han sincronizado correctamente dentro de dichos directorios remotos. Para ello, vamos a acceder a ambos proveedores para ver si ha sido así.
Efectivamente, en Google Drive hay ficheros desde 1.txt hasta 10.txt y en Dropbox hay ficheros desde 1.txt hasta 20.txt (aunque en las capturas no se vea al completo).
Por último, voy a eliminar los 5 primeros ficheros del directorio /mnt/drive/ y todos los ficheros del directorio /mnt/dropbox/ para mover dentro de este último un fichero que acabo de descargar, para ver si se sincroniza correctamente también. Los comandos a ejecutar serían:
De nuevo, volveremos a acceder a los directorios de los proveedores para ver si la sincronización ha sido correcta.
De nuevo, la sincronización se ha llevado a cabo correctamente, pues en Drive se han borrado los 5 primeros ficheros y en Dropbox, se han borrado todos, existiendo ahora únicamente el fichero packages_list, que he movido manualmente.