TUTORIAL RCLONE PARA SUBIR ARCHIVOS A GOOGLE DRIVE (aplicable a otros servicios en la nube).
Autor: @Dijara Fecha: 17/01/2017 Última actualización: 08/02/2017 Antes de nada, quiero agradecer la ayuda de @elDanixd para la realización de este tutorial ya que me ayudó en la configuración de mi primer “remote” dentro del uso del programa. Igualmente tengo que dar las gracias a @cere84 por compartir también los comandos de instalación y montaje de rclone en DSM y a @s_ergi0, por sus detallados pasos para monitorizar el proceso dentro de DSM con tmux y copiar archivos comprobando directorios. Espero que sirva a la gente que se pueda encontrar en la situación en la que me encontraba yo antes de saber utilizar el programa bajo Windows tras varios intentos fallidos de subir archivos a Google Drive,
ya que las unidades montadas por otros programas hacían que las subidas fallasen, o se paralizase el pc, o las subidas a través de la web no fuesen lo suficientemente rápidas, por lo que esta forma ha sido a través de la cual he conseguido mayor estabilidad. Es por ello por lo que he querido compartir esta guía para principiantes, que espero que alguien siga para configurarlo, o bien alguien continúe y aprendamos más sobre la configuración de este programa. No es un tutorial oficial de rclone, puesto que son las directrices más básicas para configurarlo con un uso exclusivo para hacer una copia en la nube. Para ver el manual completo y todos sus comandos, podemos dirigirnos a: https://github.com/ncw/rclone/blob/master/MANUAL.md http://rclone.org/docs/ Comentar igual igualmente que si alguien detecta algún error en la misma o tiene alguna sugerencia para mejorarla, sin problema puede comentármelo y estaría agradecido de que alguien me ayudara a hacerla más completa para dejarlo explicado para principiantes. OJO: Los comandos debemos escribirlos exactamente igual que aquí respetando las mayúsculas y minúsculas que tengamos en nuestras rutas particulares, puesto que de lo contrario, nos encontraremos con fallos y errores. Aquí todo es case sensitive. Comenzamos… CONFIGURACIÓN DE RCLONE (en este caso a través de Windows pero configurable desde cualquier otro sistema operativo). Para comenzar a utilizar r.clone, tras realizar la pertinente descarga del programa para Windows (http://rclone.org/downloads/), debemos descomprimir el contenido en C:\Archivos de Programa (x86), creando previamente en esta ruta una carpeta llamada rclone. Una vez creada la carpeta, lo que hay que hacer es ejecutar cmd.exe. Al ejecutarlo, normalmente se abre por defecto en la ruta C:\Users\tuusuario, por lo que para volver a la raíz, tecleamos: cd.. Y para volver a una carpeta anterior volvemos a teclear cd.. para llegar a C:\ y teclear la ruta en la que tenemos el ejecutable de r.clone, accediendo a ella mediante el comando: cd C:\Program Files (x86)\rclone Seguidamente tecleamos “rclone” A continuación, ponemos “rclone config”, para seguidamente elegir de entre la lista sugerida, la letra “n”, new remote. Ahora le damos el nombre que queramos, por ejemplo “google”. Par elegir Google Drive elegimos el 7. En la siguiente línea, dejamos en blanco el client_id. En la siguiente línea, volvemos a dejar en blanco el client_secret. En las siguientes sugerencias pulsamos n, para no usar la auto configuración.
A continuación, se abrirá el navegador web para decirnos que si deseamos permitir a rclone ver y administrar los archivos que tienes en Google Drive, por lo que por supuesto, permitimos. Nos aparecerá un código que hay que copiar y pegar en la consola de nuevo. Pulsamos “y” para aceptar tras haber introducido el código, y por último pulsamos “q” quit, para salir. Hemos terminado la configuración y ya no hay que volver a tocarla, a no ser que queramos volver a configurar otra cuenta u otro proveedor de servicios. Ahora nos disponemos a copiar contenido a Google Drive, en mi caso, tengo las unidades del NAS, mapeadas en Windows como unidades de red, con sus letras de unidad correspondientes, por lo que pondríamos el siguiente comando: rclone -u --transfers 6 copy Y:/Recetas google:Recetitas Con este comando ya podemos empezar a copiar. 6 sería el número de subidas simultáneas de archivos. Y, la letra de unidad asignada a la carpeta del NAS mapeada en nuestro equipo. Recetas, la carpeta que quiero copiar del NAS completa. google, el nombre que dimos antes a la unidad remota. Recetitas, sería la carpeta que hemos creado en Google Drive para incluir el contenido de la carpeta del NAS. En el caso de que la ruta con el nombre de una carpeta contenga espacios, debemos incluirla entre comillas, por ejemplo: rclone -u --transfers 6 copy “Y:/Recetas de la abuela” google:Recetitas
ENCRIPTADO CON RCLONE Bien, ahora nuestra idea es que nuestros archivos se encuentren seguros en la nube, por lo que vamos a proceder a encriptarlos. Lo primero que tenemos que hacer es crear un nuevo “remote” que este caso llamaremos “Backup”. Para ello ejecutamos el programa en la consola y copiamos lo siguiente: rclone config Creamos el nuevo remoto: “n” En name, en este caso ponemos: Backup. Como queremos encriptar archivos, pulsamos 5. Ahora ponemos el nombre de nuestro primer “remote” creado, que en nuestro caso era “google”, seguido de los dos puntos y el nombre de nuestro remote en el que se van a encriptar los archivos como vemos a continuación.
Remote> google:Backup En esta opción que nos saldría ahora deberíamos elegir 1, ó 2, En el número 1, únicamente encripta los archivos y no los nombres de carpetas, cambiando la extensión de los archivos añadiendo el .bin a los mismos. En el número 2 quedaría encriptado todo lo añadido, incluyendo nombres de carpetas. Por tanto, en este caso vamos a utilizar la opción 1, por poner una de ejemplo. Como queremos crear nuestra propia contraseña, pulsamos y, para que no lo genere el programa. Ahora, aunque no veamos nada en pantalla, si escribimos, nuestra contraseña se está registrando, por ello, tecleamos la contraseña: **** Ahora nos pide confirmación: **** Ahora, opcionalmente nos pide una segunda contraseña, que debe ser diferente a la primera. Podemos dejarla en blanco eligiendo n, teclear la nuestra pulsando y, o que la genere el programa pulsando g. Generamos la nuestra: y. Volvemos a hacer lo mismo que anteriormente, introducimos contraseña y confirmamos. Está lista, por lo que pulsamos de nuevo y, yes, this is ok, y seguidamente q, para salir.
Para copiar archivos a esta ruta, lo que debemos de hacer ahora es lo siguiente:
rclone -u --transfers 6 copy “Y:/Recetas de la abuela” Backup:Recetitas En este caso, todo lo que no esté creado dentro de la carpeta Backup, tras los dos puntos de la ruta final, la creará el programa solo, y todas las carpetas que incluyera la carpeta “Recetas de la abuela”, irán a la carpeta Backup con nombres ilegibles totalmente encriptados si elegimos la opción 2, o veríamos todos los nombres de las carpetas correctamente en la opción 1, pero con los archivos que incluyen con un formato que no nos deja abrir.
INSTALACIÓN Y USO DE RCLONE EN DSM 6 (SYNOLOGY) Para DSM 5.2 no hay opción para fusermount, por lo que algún compañero está investigando sobre ello. Si alguien prueba con el siguiente link que pasó por Telegram @Debianjoker en teoría nos serviría para investigar el montaje de unidad en DSM 5.2 (como en mi caso, que aún no he tenido tiempo para probarlo). Si alguien lo consigue, ¡¡que comparta por favor!! https://forum.synology.com/enu/viewtopic.php?f=36&t=59671
Describimos la instalación:
En primer lugar, para utilizar rclone en DSM, tenemos que descargar de la web oficial de rclone, la versión 386 de Linux del programa y descomprimirla en una carpeta alojada en el NAS. Para poder hacer uso desde fuera, por ejemplo Windows, podemos utilizar Putty para acceder a través de SSH, o Terminal en Mac, habilitando el servicio previamente desde DSM, bien desde la red local, o abriendo puerto para utilizar desde fuera de ella. Como ejemplo podemos utilizar: https://the.earth.li/~sgtatham/putty/latest/x86/putty.exe Conectamos a través de SSH: ssh tuuser@ipdelnas y acceder poniendo la contraseña*. DSM 6 Para tener permisos root debemos teclear sudo –i Tras ello iniciamos sesión como admins. Y tecleamos: cd /volumen1/rclone/ sudo cp rclone /usr/sbin/ sudo chown root:root /usr/sbin/rclone sudo chmod 755 /usr/sbin/rclone sudo mkdir -p /usr/local/share/man/man1 sudo cp rclone.1 /usr/local/share/man/man1/ sudo mandb ** ** Si da error no pasa nada, todo funciona igual.
volumen1/rclone/ Ruta donde descomprimimos rclone A partir de ahora, podríamos utilizar ya el comando para ejecutar la configuración de rclone como ya hicimos anteriormente con rclone config para crear tanto el “remote”, como el “secret” (remote cifrado que llamábamos Backup anteriormente). *Podría suceder, como en mi caso, que por motivos de seguridad, tuviéramos deshabilitado el usuario “admin” que viene por defecto en nuestros equipos, por defecto el sistema sólo suele aceptar conexiones ssh del usuario “admin” o “root” en la versión 5.2, en la 6 hay que dar permisos a root, por lo que en este caso, nos toca habilitar temporalmente al usuario “admin” para acceder como root a nuestro sistema. Para esto, conectaríamos de la siguiente manera a través de putty: DSM 5.2 ssh root@iplocaldelnas En mi caso no fue posible hacerlo así hasta que a través de Android instalé la app “Termius” Hay que señalar que la clave de acceso root es la misma que la del usuario “admin”. Una vez tengamos acceso y nos marque el nombre de nuestro server en terminal, escribimos: vi /etc/passwd
y en la lista de usuarios, veremos que el que queramos que tenga acceso marca al final del todo: “sbin/nologin”, por lo que habría que ir con el cursor hasta ese parámetro y modificarlo por: “bin/sh”, para tras esto pulsar esc. Y teclear :wq e intro. Ya podemos deshabilitar al user “admin” de nuevo. Ya mediante putty accederíamos poniendo la ip del nas únicamente para que terminal nos pida user, y nos identificamos con nuestra contraseña. Montar unidad “remote” en DSM Para ver los archivos de Google Drive en nuestro DSM, tenemos que montar la unidad mediante el siguiente comando: rclone mount google:/ --allow-non-empty --allow-other --read-only /volumen1/google/drive/ & google Nombre del remote. /volumen1/google/drive/ Carpeta creada dentro de una carpeta compartida Mount encriptado para verlo desencriptado (después de haber creado el remoto secret “Backup” que apunta a la carpeta destino del remoto principal con contenido cifrado) (ej: google:/Backup) En esta carpeta veríamos los archivos limpios aunque estuviesen encriptados. rclone mount Backup: --allow-non-empty --allow-other --read-only /volumen1/google/drive/ & Backup Nombre del remote encriptado. /volumen1/google/drive/ Lo mismo de antes. Listar para poder verlo rclone ls /ruta/montada/ Unmount fusermount -u /ruta/a/desmontar/ Encriptar lo que hayas subido ya a la nube sin encriptar -
Crear una carpeta y mover el contenido NO encriptado a esa carpeta (ej; noencriptado y moverlo ahí) y otra carpeta donde quieras poner lo encriptado (ej: encriptado) Tener creado el remoto y al igual que montar encriptado, tener el remoto “secret” que apunte a la carpeta donde van a ir los archivos encriptados (ej: remote:/encriptado) Ejecutar el siguiente comando para que empiece a encriptar el contenido:
rclone sync remote:/noencriptado secret: & (no es necesario poner /encriptado porque ya se ha enlazado al crear el remoto secret=) Remontar remoto En ocasiones se desconecta solo, para que no ocurra esto, se puede crear un script que se ejecuta automáticamente cada 15 minutos, y así se mantiene accesible las 24 horas del día.
El script contiene un solo comando
ls /ruta/donde/está/montado
Para crearlo, accedemos al panel de control de DSM y a tareas programadas. Creamos tarea programada- user define script y en la pestaña de opciones de tarea poner el comando señalado. Por último, cambiamos la programación de una vez al día a cada 15 minutos. Desde la carpeta montada de los archivos encriptados, se pueden copiar y pegar los archivos a otra carpeta sin necesidad de poner contraseña, lo cual es muy cómodo. rclone copy comprobando directorios Otra opción de las muchas que ofrece rclone, es la de subir los archivos comparando directorios (directorio origen vs directorio destino). Esta función lo que permite es comprobar si alguno de los ficheros que se van a subir ya existen en el directorio destino y, por lo tanto, tiene que evitar volver a copiarlos (y así ahorrar duplicados y tiempo de espera en la subida). Los parámetros a utilizar son:
--checksum: Comprueba el tamaño y hace un checksum de los ficheros --ignore-existing: Ignora los ficheros que ya existen en el directorio destino --transfers: Es el número de ficheros a subir al mismo tiempo (Ejemplo: “-transfers=8”) --stats: Intervalo de tiempo en mostrar un print por pantalla con el progreso del comando ejecutado. Pueden indicarse milisegundos “ms”, segundos “s” y minutos “m” (Ejemplo: “stats: 20s”) No sé si se pueden indicar horas, no lo he probado nunca
Ejemplo a utilizar: rclone copy /volume1/media/series/ google:series --checksum --ignore-existing --transfers=8 -stats 20s Esto lo que hace es: copiar el contenido de la carpeta local “series” ubicada en /volumen1/media/series/, a la carpeta remota “series” ubicada en nuestro remoto google, comprobando si los ficheros están bien, y si no existen en la carpeta remota. Hará 8 transferencias simultáneamente, y mostrará el progreso cada 20 segundos. Utilizando tmux para monitorizar el progreso de rclone tmux es un programa command-line que hará de nuestro terminal un súperterminal. Se pueden crear múltiples terminales dentro de la terminal principal, visualizar varios terminales a la vez a través de paneles, y muchas cosas más, pero lo que nos interesa en este caso es que funcione incluso si no estamos conectados por SSH. Al ser Synology un OS cerrado, el famoso apt-get install tmux no nos va a funcionar en este caso, pero SynoCommunity tiene la aplicación en el Centro de Paquetes, así que hay que añadir en “Orígenes del paquete” el siguiente repo: http://packages.synocommunity.com/ Una vez añadido, buscáis “tmux” y click en Instalar:
Una vez instalada os aparecerá en estado “detenido” y no podréis iniciarla aunque ejecutéis la acción. Esto es porque es una aplicación de consola, sin GUI, así que hay que hacerla funcionar a través de la misma.
Antes de nada, siempre está bien tener a mano una cheatsheet por si no nos acordamos de cómo funciona el comando. Aquí hay una muy buena y sencilla: https://gist.github.com/MohamedAlaa/2961058 Tiene los comandos y shortcuts más importantes, por si queréis experimentar más con la herramienta. Para nuestro propósito utilizaremos lo siguiente:
tmux: el comando sin parámetros simplemente crea una nueva sesión sin nombre. tmux new -s nombredesesión: Esto lo que hace es iniciar una nueva sesión (un nuevo terminal) con el nombre nombredesesión. Así luego podremos acceder a ella a través de ese nombre. tmux a -t nombredesesión: Lo que hace es volver a entrar a la sesión creada previamente.
tmux ls: Lista las sesiones activas (nombre, ID…). tmux kill-session -t nombredesesión: Cierra por completo la sesión indicada.
Esto son básicamente los comandos que hacen falta para nuestro propósito, pero siempre podéis investigar y darles un uso más avanzado u orientado a vuestros fines. La idea sería algo así: tmux new -s subirficheros Una vez dentro, veréis una terminal nueva. Es como su hubierais abierto una nueva sesión en Putty, con la peculiaridad de que siempre que vosotros queráis va a estar en segundo plano funcionando, accesible y manipulable. Ahí simplemente tenéis que utilizar lo hablado anteriormente, que sería: rclone copy /volume1/media/series/ google:series --checksum --ignore-existing --transfers=8 --stats 20s Puede que tengáis, por ejemplo, 500gb de archivos para subir, y éste es un buen método para poder monitorizar ese proceso. Una salida ejemplo sería esta:
Así podéis ver cómo va la subida siempre que entréis en la sesión. Para salir de la sesión y volver a la principal (a la sesión desde la que hemos entrado a través de Putty), hay que utilizar unos atajos de teclado: Teclas Ctrl-B + D. Primero un Ctrl+B y después click en D, para que lo entendáis. Podéis leer mucho más sobre los atajos de teclado de tmux a través de este enlace: https://wiki.archlinux.org/index.php/Tmux#Key_bindings
Para entrar a comprobar cómo va, ejecutáis desde la sesión principal: tmux a -t subirarchivos Para cerrar la sesión por completo, ejecutáis desde la sesión principal: tmux kill-session -t subirarchivos
Espero seguir aprendiendo a utilizarlo y seguir compartiendo y ampliando esto con todo el que lo necesite y que aquella persona que se anime a seguir ayudando en la elaboración de este tutorial, o encuentre algún fallo, que por favor lo haga y/o lo diga en beneficio de todos. Muchas gracias.