Sunteți pe pagina 1din 23

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

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 RCLONE.

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, 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 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 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 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. 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 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 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.

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 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 6

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 /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 limpios aunque estuviesen encriptados.

rclone mount 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 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
/volume1/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.

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

Y para montar la unidad:

rclone mount Backup:/ --allow –non-empty --allow-other /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 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

mkdir /home/usuario/logs

Dentro de la carpeta raí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 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." | tee -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 2>&1

Y por último hacemos ejecutable el archivo:


chmod a+x /home/usuario/scripts/rclone-mount.cron

*Otra alternativa que podemos utilizar, es la compartida por @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
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, 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 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 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

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/Drive -c “nombredelusuario” usuarioftp

Descrita esta línea:

-g ftp = el usuario pertenece al grupo ftp.

-d /home/ftp/usuarioftp = El directorio principal del usuario es /home/ftp/usuarioftp.

-c “nombredelusuario” = el nombre completo del usuario.

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 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 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 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 /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 archivo /etc/proftpd/proftpd.conf lo
siguiente (por ejemplo carpeta 123 dentro de carpeta ftp):

<Directory /ftp/123>

Umask 333 333

<LIMIT WRITE>

DenyAll

</Limit>

<Limit STOR>

DenyAll

</Limit>
</Directory>

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):

<Limit LOGIN>

AllowUser usuario1 usuario2 usuario3

DenyAll

</Limit>

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 o nombre de dominio si lo tienes

Usuario: el usuario que has creado

Contraseña: la contraseña que le has dado al usuario

Puerto: El que hayamos determinado, por defecto es el 21, que como 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-server

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 del paquete” el siguiente repo:

http://packages.synocommunity.com/

Una vez añadido, buscamos “tmux” y click en Instalar:


Una vez instalada, nos aparecerá en 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 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:Trabajos Backup:Trabajoscompartidos

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.

rclone config: Sirve para entrar a la configuración de nuestra/as cuentas.

rclone 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: Sincroniza la fuente y destino, haciendo modificaciones únicamente en el destino.

rclone mkdir: Crea una ruta si no existe aún.

rclone rmdir: Elimina una ruta creada.

rclone check: Comprueba que los archivos de la fuente y destino son los mismos.

rclone ls: Lista los elementos que contiene una ruta, indicando su tamaño y ruta.

rclone mount: Monta la unidad en la ruta indicada. La web la marca como EXPERIMENTAL.

rclone cryptcheck: Comprueba la integridad del remoto encriptado.

Otros comandos:
--no-traverse: Controla si los archivos de sistema se cruzan al utilizar copy o move. Es importante
decir que este comando no es compatible con 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


destino sin importar su contenido.

ANEXO PARA OTROS SERVICIOS EN LA NUBE.

Una opción a tener en cuenta si utilizamos 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.

S-ar putea să vă placă și