TUTORIAL DE USO BÁSICO DE RCLONE PARA SU USO JUNTO A GOOGLE DRIVE (aplicable a otros servicios en la nube).
Autor: @Dijara Fecha: 17/01/2017 Última actualización: 08/05/2017 Versión: 1.7
ÍNDICE. Agradecimientos. 1.CONFIGURACIÓN DE REMOTES Y SECRETS EN RCLONE (en este caso a través de Windows pero configurable desde cualquier otro sistema operativo). 1.1 Creación del remote. 1.2 Encriptado con rclone. Creando el secret. 2.INSTALACIÓN Y USO DE RCLONE EN SERVIDORES. 2.1 DSM 6 (Synology) y aproximación inacabada a DSM 5.2. 2.2 Ubuntu y Debian con Quickbox. 2.2.1 Comprobar la unidad y remontar automáticamente automáticamente 2.2.2 Compartir archivos de unidad remota creada en servidor externo por FTP. (Información recogida y posteriormente adaptada de https://www.redeszone.net y https://rootear.com) a) Crear nuevos usuarios y asignar un directorio concreto como /home para un usuario en caso de no tenerlos creados. b) Configuración de usuarios. b.1) Mediante vsftpd. b.2) Mediante proftpd. 2.2.3 Compartir archivos de unidad remota creada en servidor externo por NFS. (Próximamente ). 3.UTILIZANDO TMUX PARA MONITORIZAR EL PROGRESO DE RC LONE. 4.COMPARTIR CARPETAS. 5. COMANDOS COMUNES. ANEXO PARA OTROS SERVICIOS EN LA NUBE.
Agradecimientos. 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 @s_ergi0,, por sus detallados pasos para monitorizar el proceso dentro de DSM con tmux y copiar archivos comprobando directorios. Agradecimiento además de por rapidez y dedicación a @Medisan, por su ayuda en los pasos para la configuración de un remoto en servidores Ubuntu/Debian, a @CultHero por el script de automontaje de la unidad y a @hanni3al por su explicación sobre el montaje del servidor FTP mediante proftpd. 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 co ntinú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: 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 REMOTES Y SECRETS EN RCLONE (en este caso a través de Windows pero configurable desde cualquier otro sistema operativo). 1.1 Creación del remote. 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 c orrespondientes, por lo que pondríamos el siguiente comando: rclone -u --transfers 6 copy Y:/Recetas 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. Recetas google,, el nombre que dimos antes a la unidad remota. google Recetitas, sería la carpeta que hemos creado en Google Drive para incluir el contenido de la Recetitas, carpeta del NAS. Hay que decir que si no la hemos creado previamente, haciendo esto, él la crea directamente. 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
1.2 Encriptado con rclone. Creando el secret. Comentar primeramente, que rclone, en Windows no es capaz por sí mismo de montar una unidad, por lo que tendríamos que usar para ello otro tipo de software como NetDrive o ExpanDrive por ejemplo, si bien es cierto que sí hay una versión con entorno gráfico de rclone para Windows que se llama ll ama Rclone Browser. 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 siguiente: rclone config Creamos el nuevo remoto: “ n”
En name, en este caso ponemos: Backup ponemos: Backup.. Como queremos encriptar archivos, pulsamos 5. Ahora ponemos el nombre de nuestro primer “remote” “ 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 lo s nombres de las carpetas correctamente en la opción 1, 1 , pero con los archivos que incluyen con un formato que no nos deja abrir.
2.INSTALACIÓN Y USO DE RCLONE EN SERVIDORES. 2.1 DSM 6 (Synology) y aproximación inacabada a DSM 5.2.
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 alguien lo consigue, ¡¡que comparta por favor!! 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 rclon e, 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/ /volumen1/rclone/ sudo cp rclone /usr/sbin/ sudo chown root:root /usr/sbin/rclone sudo chmod 755 /usr/sbin/rclone / 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 t emporalmente 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 6
Para ver los archivos de Google Drive en nuestro DSM, tenemos que montar la unidad mediante el siguiente comando: rclone mount google google:/ :/ --allow-non-empty --allow-other --read-only /volume1/google/ & google Nombre del remote. /volume1/google/ 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 arc hivos limpios aunque estuviesen encriptados. rclone mount Backup Backup:: --allow-non-empty --allow-other --read-only /volume1/google/ & Backup Nombre del remote encriptado.
/volume1/google/ 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 lo s 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/ 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 /volume1/media/series/, a la carpeta remota “series” ubicada en nuestro remoto google, google, comprobando si los ficheros están bien, y si no existen en la carpeta remota . Hará 8 transferencias simultáneamente, simultáneamente, y mostrará el progreso cada 20 segundos. segundos.
2.2 Ubuntu y Debian con Quickbox. Para montar una unidad en un servidor de tipo Ubuntu o Debian en este caso con Quickbox instalado que es lo que personalmente uso, primeramente podemos copiar nuestro archivo de configuración con las claves de nuestros remotes o secrets creados en otros equipos para no tener que volver a hacer configuraciones, de tal manera, que importamos el archivo .rclone.conf a la carpeta de usuario que tengamos creada en nuestro servidor, quedando de esta forma: /home/usuario/.rclone.conf. Tras ello, accediendo a él mediante terminal tendríamos que copiar lo siguiente para crear un punto de montaje: mkdir /home/usuario/Drive /home/usuario/Drive Y para montar la unidad: rclone mount Backup Backup:/ :/ --allow – non-empty non-empty --allow-other /home/usuario/Drive /home/usuario/ Drive &
Backup sería el nombre del remote creado. Drive Sería el directorio donde hemos creado el punto de montaje.
Podemos encontrarnos encontrarnos que nos de error diciendo: Failed to save config file: open /home/usuario/.rclone.conf: permission dennied, por lo que lo solucionaríamos escribiendo: sudo chown usuario:usuario /home/usuario/.rclone.conf Si ahora volviésemos a intentar montar la unidad, podríamos encontrarnos un nuevo error: mount helper error: fusermount: option allow_other only allowed if ‘user_allow_other’ is set in
/etc/fuse.conf, para lo cual pasaríamos a editar el archivo fuse.conf escribiendo: sudo nano /etc/fuse.conf En la última línea agregaríamos la línea user_allow_other En caso de que la última línea apareciese comentada de esta forma, únicamente la descomentaríamos eliminando el #: # user_allow_other Para guardar ahora Ctrl+O, enter y Ctrl+X.
Una vez hecho hecho, para comprobar que la unidad está agregada, comprobamos listando: ls /home/usuario/Backup Si dentro vemos lo que tenemos en la cuenta de drive, está todo perfecto.
Si lo que queremos es desmontar la unidad, tendríamos que teclear lo siguiente: fusermount -u /ruta/local/montada Si esto fallase: fusermount -z -u /ruta/local/montada Más información en: https://rclone.org/commands/rclone_mount/
2.2.1 Comprobar la unidad y remontar automáticamente En ocasiones, si intentamos acceder a la unidad montada con rclone, nos encontramos con que se ha desmontado, como sabemos, esta función sigue marcada en su web oficial como experimental, por tanto, podemos hacer que la unidad se monte automáticamente en caso de desmontarse. Para ello, procederemos a crear algunas carpetas en nuestro usuario. Comentar que este script está probado en Ubuntu. mkdir /home/usuario/scripts /home/usuario/scripts mkdir /home/usuario/logs /home/usuario/logs Dentro de la carpeta raíz r aíz o carpeta montada dentro de nuestro remote, creamos por ejemplo un archivo pdf en blanco llamado “mountcheck.pdf” Crearemos posteriormente un archivo llamado “rclone -mount.cron” que incluiremos en la
carpeta scripts. Bien, para crear ese archivo .cron, lo haremos con los siguientes parámetros:
#!/bin/bash # Change paths for mount and log file & create mountchek file. # Add script to crontb by typig crontab -e and pasting the line bellow (without # in front ) # * * * * * /home/usuario/scripts/rclone-mount.cron >/dev/null >/dev/null 2>&1 # Make script executable with: chmod a+x /home/usuario/scripts/rclone-mount.cron
logfile="/home/usuario/logs/rclone-mount.cron.log"
if pidof -o %PPID -x "rclone-mount.cron"; then echo "$(date "+%d.%m.%Y %T") EXIT: rclone-mount.cron already running." exit 1 fi
if [[ -f "/home/usuario/Drive/mountcheck.pdf" ]]; then echo "$(date "+%d.%m.%Y %T") INFO: Check successful, Google Drive mounted." | t ee -a "$logfile" exit else echo "$(date "+%d.%m.%Y %T") ERROR: Drive not mounted, remount in progress." | tee -a "$logfile" # Unmount before remounting fusermount -uz /home/usuario/Drive/ | tee -a "$logfile" rclone mount \ --read-only \ --allow-non-empty \ --allow-other \ Backup: /home/usuario/Drive/ &
if [[ -f "/home/usuario/Drive/mountcheck.pdf" ]]; then echo "$(date "+%d.%m.%Y %T") INFO: Remount successful." | tee -a "$logfile" else echo "$(date "+%d.%m.%Y %T") CRITICAL: Remount failed." | tee -a "$logfile" fi Como dicen las instrucciones del script, teclearemos desde consola: crontab -e Ahora copiaremos esta línea sin mencionar, sin # # * * * * * /home/usuario/scripts/rclone-mount.cron >/dev/null >/dev/null 2>&1 Y por último hacemos ejecutable el archivo:
chmod a+x /home/usuario/scripts/rclone-mount.cron / home/usuario/scripts/rclone-mount.cron
*Otra alternativa que podemos utilizar, es la compartida por @sergi_0 sergi_0:: Notas del script -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------El funcionamiento es simple: · Se recibe una lista de remotes (previamente configurados mediante rclone config); el fichero remoteslist: gdrive:/temp2/montaje:--allow-non-empty --allow-other gdrive:/temp2/montaje:--allow-non-empty sdrive:/temp2/montaje2 · Se comprueba el montaje de cada uno de esos remotes, y en caso de no encontrarse montado/s, se realiza el montaje. · Se ha añadido la posibilidad de personalizar el montaje de cada remote, a continuación se explica su uso. Lo que se necesita saber para su uso: básicamente manipular el fichero remoteslist. Todo está pensado para que solamente se tenga que modificar la lista de remotes. Lo ideal es dejar este fichero junto al script, es tal como está planteado. No obstante se puede modificar la ruta de este archivo, y configurarla en el propio script. Suponiendo que tomamos la convención por defecto, es decir, que este fichero que contiene la lista de remotes, lo conservamos junto al script, solamente es necesario realizar lo siguiente en dicho fichero: · Cada línea de este fichero representa un remote y su configuración, co nfiguración, de esta forma: nombre_remote:ruta_montaje_remote:opciones_montaje_remote · En caso de no necesitar opciones de montaje, no se indica nada, y dejaríamos simplemente: nombre_remote:ruta_montaje_remote Es tan simple como eso. Realmente no hay que modificar nada más. En el archivo que hemos creado en el ejemplo remosteslist se encuentran 2 ejemplos: 1 remote con opciones de montaje, y otro sin opciones de montaje. Por último, comentar que la idea es que la salida de este script, se redirija a un fichero a modo de log, y de esta forma, podremos tener un feedback del comportamiento del mismo, y de los remotes (ya que podemos tener una idea de cuánto se ha perdido el montaje). Se presupone su uso junto a cron, para programar periódicamente las comprobaciones. No olvidar programarlo para root.
NOTAS IMPORTANTES: 1. Si hubiese alguna opción/flag o pción/flag que necesite de un caracter ':' el script puede fallar, es la única casuística que puede dar problemas. Es complicado que se de el caso en la mayoría de opciones que manejamos, pero se comenta por si las moscas. 2. El script se programa pensando en el montaje del remote desde su raíz, es decir, si queremos montar solamente una carpeta del remote, el script no controla esta casuística (se puede integrar si es necesario, se tiene en cuenta). Por tanto, el script, es el que sigue a continuación: #!/bin/bash # # Este script comprueba si un remote de rclone está correctamente montado, y en caso de no ser así, realiza el montaje. # Es necesario personalizar: # listremotes: fichero que contiene la lista de remotes y por linea nombre_remote:ruta_montaje:opciones_montaje # rclone_path: ruta absoluta donde se encuentra el binario rclone # Cualquier añadido o mejora que se pueda ocurrir, comentadlo. # Por supuesto, y aunque se sobreentiende, lo ideal es programar mediante cron cada x tiempo (cada 30 segundos, 1 min, 15 min... cada uno el tiempo que estime), y redirigir la salida a un fichero log en su programación (no olvidar que cuanto mayor sea la frecuencia, si guardamos la salida en un log, esta puede crecer bastante en tamaño). # # By Sergi_O listremotes="./remoteslist" rclone_path="/temp2" while read -r line do mount_path=`echo $line | cut -d : -f 2` your_remote_name=`echo $line | cut -d : -f 1` mount_options=`echo $line | cut -d : -f 3` is_mount=`mount | grep $your_remote_name | grep $mount_path` date=`date +%d-%m-%Y:%H:%M:%S` if [ "$is_mount" == "" ] then echo $date": Unidad no montada, realizando montaje del remote: "$your_remote_name $rclone_path/rclone mount $mount_options $your_remote_name:/ $mount_path & else echo $date": Montaje del remote "$your_remote_name" correcto." fi done < $listremotes
2.2.2Compartir archivos de unidad remota creada en servidor externo por FTP. (Información recogida y posteriormente adaptada de https://www.redeszone.net y https://rootear.com)
a) Crear nuevos usuarios y asignar un directorio concreto como /home para un usuario en caso de no tenerlos creados: Podemos crear un grupo de usuarios para que no tengan acceso SSH al servidor, por lo que podremos darles permisos especiales: sudo groupadd ftp Se crea una shell fantasma para evitar acceso SSH: sudo mkdir /bin/ftp Tendríamos que editar las shells: nano /etc/shells Y en ella añadimos la shell fantasma que hemos creado: /bin/ftp Nos toca crear una carpeta al usuario FTP asignando los lo s permisos correspondientes: mkdir /home/ftp/usuarioftp chmod -R 777 /home/ftp/usuarioftp O bien, podremos asignar la unidad de Drive para ello, convirtiendo su /home y reduciéndola a: /home/usuario/Drive /home/usuario/ Drive Añadimos el usuario que pertenecerá al grupo FTP: sudo useradd -g ftp -d /home/ftp/usuarioftp -c “nombredelusuario” usuarioftp O en este caso en la unidad Drive: sudo useradd -g ftp -d /home/usuario/ /home/usuario/Drive Drive -c “nombredelusuario” usuarioftp
Descrita esta línea: -g ftp = ftp = el usuario pertenece al grupo ftp. -d /home/ftp/usuarioftp = /home/ftp/usuarioftp = El directorio principal del usuario es /home/ftp/usuarioftp. -c “nombredelusuario” = el nombre completo del usuario. usuarioftp = usuarioftp = la última palabra será el nombre de usuario.
El usuario debe tener una contraseña: sudo passwd usuarioftp
Lo ideal ahora sería enjaular al usuario en la carpeta que queremos compartir con él, como explicaremos después, por lo que buscaremos al usuario creado: nano /etc/passwd En una de las líneas, veríamos algo como: usuarioftp:x:1004:118:nombredelusuario: /home/usuario/Drive: /bin/ftp Esta línea anterior debemos copiarla y pegarla en el siguiente archivo guardando los cambios por supuesto: nano /etc//vsftpd.chroot_list Finalizados los cambios, reiniciamos el servidor. b) Configuración de usuarios. b.1 Mediante vsftpd. Para tener acceso a una determinada carpeta en nuestro servidor a través t ravés de FTP, debemos instalar FTP Server, y una de las formas de hacerlo es mediante vsftpd, que por ejemplo es el que usa Quickbox para el que lo use. Los parámetros descritos a continuación, pueden cambiarse a gusto del usuario: sudo aptitude install vsftpd Editamos el archivo vsftpd.conf: sudo nano /etc/vsftpd.conf Y lo dejamos de la siguiente forma:
#Las líneas descritas a continuación pueden ser omitidas de la configuración, ya que se limitan a explicar lo que configuramos. #listen sirve para iniciar el servidor al arrancar el equipo. #anonymous_enable permite o no que los usuarios anónimos inicien sesión. #local_enable nos permite identificarnos. #write_enable nos permite escribir en los diferentes directorios. #dirmessage_enable saca un log de lo que se hace en el server. #use_localtime da la hora del server. #xferlog_enable da el log de subidas y bajadas. #connect_from_port_20 Puerto para acceder por FTP (Por ( Por defecto suele ser el 20, pero puede cambiarse por otro que no esté en uso). #ftpd_banner muestra el mensaje de bienvenida en la conexión.
#chroot_local_user para asignar a los usuarios su propio /home. Poniendo YES, restringimos según parámetros descritos y poniendo NO, el usuario FTP accedería a todos los archivos hasta la raíz /.
listen=YES anonymous_enable=NO local_enable=YES write_enable=YES dirmessage_enable=NO use_localtime=YES xferlog_enable=NO connect_from_port_20=YES ftpd_banner=Bienvenido a FTP Server chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/private/vsftpd.pem
Si queremos “enjaular” a un usuario FTP en su propio directorio / home y tener el /home para el administrador, si tecleamos YES para chroot_local_user, lo que haremos será convertir la lista de usuarios de chroot_list_enable en los usuarios que tendrían acceso a la raíz del sistema, por lo que deberíamos añadir: chroot_local_user=YES chroot_list_enable=YES
Por defecto, la lista se encuentra en la ruta que sigue, la cual habría que añadir en otra línea: chroot_list_file=/etc/vsftpd_chroot_list Para ello, habría que crear un archivo: sudo gedit /etc/vsftpd_chroot_list En este archivo debemos escribir el nombre de los usuarios a los que queremos dar permiso para salir a la raíz o únicamente al administrador del servidor, el resto de usuarios estarían enjaulados en su /home, para ahora aplicar los cambios reiniciando el servidor. Otra alternativa para añadir al administrador la chroot_list sería:
echo “usuarioadministrador” >> /etc/vsftpd.chroot_list
Añadiendo >> en lugar de >, hace que lo que escribamos tras la palabra echo, se añada al final del archivo mencionado en la ruta que le sigue. Sin embargo, si utilizamos sólo el símbolo >, borraríamos todo el contenido para sustituirlo por esta línea con el nombre de usuario.
Acciones para el servidor: Iniciar: sudo /etc/init.d/vsftpd start Parar: sudo /etc/init.d/vsftpd stop Reiniciar: sudo /etc/init.d/vsftpd restart
b.2) Mediante proftpd. En este caso, algunos de los comandos son idénticos al a l uso mediante vsftpd. Instalamos el FTP server mediante proftpd: sudo apt-get update sudo apt-get upgrade sudo apt-get install proftpd Una vez instalado editamos el archivo arc hivo /etc/proftpd/proftpd.conf y dejamos las siguientes líneas de la siguiente forma: línea 35: DefaultRoot línea 39: RequireValidShell
~ off
Si queremos que alguna carpeta a la que accede algún usuario por ftp, éste no pueda modificar su contenido (el cliente solo podrá ver y descargar), tenemos que agregar encima de la línea 248 (# Include other custom configuration files) del del archivo /etc/proftpd/proftpd.conf lo siguiente (por ejemplo carpeta 123 dentro de carpeta ftp): Umask 333 333 DenyAll DenyAll
Al final del todo del archivo /etc/proftpd/proftpd.conf también añadimos (con esto le decimos que usuarios del sistema podrán acceder por ftp, solo los que pongas aquí podrán acceder): AllowUser usuario1 usuario2 usuario3 DenyAll
Añadir usuarios para el FTP (sobre todo poner el comando de –no-create-home, sino en el directorio /home de nuestro Linux tendremos una carpeta creada con cada usuario que añadimos): sudo adduser --no-create-home nombreusuario
Si por algún motivo no nos pide que le demos contraseña al usuario que acabamos de crear, con el siguiente comando le podremos dar una contraseña: sudo passwd nombreusuario
Una vez todo lo de arriba hecho, editamos el archivo /etc/passwd y la última línea nos aparecerá el ultimo usuario creado con una serie de números y rutas tipo así: usuario:x:1000:1000:,,,:/home/usuario:/bin/bash
Aquí tendremos que modificar la última palabra bash por false, y la ruta /home/usuario por la carpeta a la que queremos que ese usuario acceda cuando entre por ftp, x ejemplo /ftp, si modificamos para este ejemplo quedaría una cosa así, el resto de la línea habría que dejarlo como está: usuario:x:1000:1000:,,,:/ftp:/bin/false
Para eliminar un usuario se puede hacer de la siguiente forma: sudo userdel usuario
Una vez todo hecho reiniciamos el servicio proftpd y si todo ha salido bien debería de funcionar, para reiniciar con el siguiente comando: sudo service proftpd restart
Para acceder al FTP: Host: IP Host: IP o nombre de dominio si lo tienes Usuario: el Usuario: el usuario que has creado Contraseña: la Contraseña: la contraseña que le has dado al usuario Puerto: El Puerto: El que hayamos determinado, por defecto es el 21, que como c omo anteriormente decíamos, puede modificarse.
2.2.3 Compartir archivos de unidad remota creada en servidor externo por NFS Lo primero que tenemos que hacer es instalar el servicio NFS en nuestro servidor Ubuntu, ya que en DSM viene por defecto y únicamente tendríamos que configurar las carpetas a compartir por dicho protocolo. Por ello, para instalar mediante SSH, el servicio NFS haríamos lo siguiente: sudo apt-get install nfs-kernel-se nfs-kernel-server rver Las carpetas a compartir deberían incluirse en el fichero /etc/exports, por lo que habría que editarlo con nano: sudo nano /etc/exports
(Próximamente…) Si alguien se aventura a ello se agradece.
3. UTILIZANDO TMUX PARA MONITORIZAR EL PROGRESO DE RCLONE. Tmux es un programa command-line que hará de nuestro terminal un súper terminal. 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 “O rígenes del paquete” el siguiente repo: http://packages.synocommunity.com/
Una vez añadido, buscamos “tmux” y click en Instalar:
Una vez instalada, nos aparecerá e n estado “detenido” y no podremos iniciarla aunque ejecutemos 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 queremos 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 podemos investigar y darles un uso más avanzado u orientado a nuestros fines. La idea sería algo así: tmux new -s subirficheros
Una vez dentro, veremos una terminal nueva. Es como su hubieramos abierto una nueva sesión en Putty, con la peculiaridad de que siempre que queramos, va a estar en segundo plano funcionando, accesible y manipulable. Ahí simplemente tenemos que utilizar lo hablado anteriormente, que sería: rclone copy /volume1/media/series/ google:series --checksum --ignore-existing --transfers=8 --stats 20s
Puede que tengamos, 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í podemos ver cómo va la subida siempre que entremos 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 entendamos. Podemos 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, ejecutamos desde la sesión principal: tmux a -t subirarchivos
Para cerrar la sesión por completo, ejecutamos desde la sesión principal: tmux kill-session -t subirarchivos
4.COMPARTIR CARPETAS Si alguien comparte con nosotros una carpeta de su Drive, y queremos añadir su contenido a nuestra cuenta, no basta con añadir la unidad a nuestra cuenta, ya que el propietario de los archivos de esa carpeta sigue siendo la persona que creó esa carpeta, lo único que se generaría sería un acceso directo a dicha carpeta. Por ello, para copiar dicho contenido, lo que tendríamos que hacer sería lo siguiente después de añadir la carpeta a nuestra unidad, que podemos hacerlo vía web o app por ejemplo. Suponemos que la carpeta que nos comparten se llama l lama Trabajos Trabajos,, y una vez añadida, en nuestro Drive, podremos llamarla igual o cambiarle el nombre. En este caso, vamos a cambiarle el nombre para verlo más claro y le vamos a llamar Trabajoscompartidos Bien desde rclone: rclone -c copy Backup Backup::Trabajos Backup Backup::Trabajoscompartidos Backup: Este Backup: Este seguiría siendo el nombre de nuestro remote.
5.COMANDOS COMUNES A continuación se listan los comandos más comúnmente usados con el programa, no todos, (ya que pueden verse en la web oficial ya mencionada) debiendo todos ellos ir seguidos de las rutas correspondientes a excepción de la configuración. co nfiguración. rclone config: config: Sirve para entrar a la configuración de nuestra/as cuentas. rclone copy: copy : Sirve para copiar archivos desde la ruta donde se encuentra un archivo (fuente) hacia un destino. En teoría se salta los archivos ya copiados. rclone sync: sync: Sincroniza la fuente y destino, haciendo modificaciones únicamente en el destino. rclone mkdir: mkdir: Crea una ruta si no existe aún. rclone rmdir: rmdir: Elimina una ruta creada. rclone check: check: Comprueba que los archivos de la fuente y destino son los mismos. rclone ls: ls: Lista los elementos que contiene una ruta, indicando su tamaño y ruta. rclone mount: mount : Monta la unidad en la ruta indicada. La web la marca como EXPERIMENTAL. rclone cryptcheck: cryptcheck: Comprueba la integridad del remoto encriptado.
Otros comandos:
--no-traverse: Controla si los archivos de sistema se cruzan al utilizar copy --no-traverse: co py o move. Es importante decir que este comando no es compatible con co n sync, ya que si utilizamos sync, éste último suplirá a --no-traverse. Al hacer una copia de un número pequeño de archivos, utilizando este comando para de listar el destino ahorrando tiempo. --ignore-existing: Hace a rclone saltarse incondicionalmente los archivos que ya existan en el --ignore-existing: destino sin importar su contenido.
ANEXO PARA OTROS SERVICIOS EN LA NUBE. Una opción a tener en cuenta si utilizamos util izamos otros servicios en la nube como Amazon Cloud Drive (ACD), es que permiten una capacidad máxima por fichero de 50Gb, y rclone no tiene la posibilidad de detectar eso por sí mismo, por lo que él lo subiría aparentemente sin problemas para dar fallo al final. Para ello, tenemos una opción en rclone copy, que sería añadir el comando: --max-size 50000M
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.