Hoy voy a enseñaros cómo podemos hacer copias incrementales cifradas y subirlas a nuestro sistema de almacenamiento online favorito, ya sea Google Drive, Dropbox
Primer paso: Rsync incremental
Lo primero es conocer un poco la herramienta Rsync: rsync es una herramienta de código abierto que permite transferir archivos de forma incremental y rápida. Está disponible gratuitamente bajo la Licencia Pública General de GNU y actualmente está mantenido por Wayne Davison.
Se puede instalar o actualizar mediante el comando:
Sudo apt-get install rsync
A pesar de ser una utilidad muy habitual en Linux, en windows es más común utilizar Robocopy
Bueno, una vez ya hemos aprendido qué es rsync, vamos a ponernos manos a la obra.
Mediante el siguiente comando vamos crear un directorio con el nombre de la fecha y hora actuales:
mkdir -p backup/$(date +%Y%m%d_%H%M%S)
Ahora vamos a crear un subdirectorio llamado actual mediante el comando
mkdir -p backup/actual
Este directorio apunta a la copia más reciente.
Rsync tiene numerosas opciones, entre las cuales usaremos las siguientes:
-v Aumenta la verbosidad
-a Esta opción activa de una sola vez las opciones -rlptgoD
-r Nos permite aplicar recursividad a la copia de seguridad
-l Mantiene los enlaces simbólicos copiandolos tal cual y apuntando al mismo destino, exista o no.
-p Nos permite transferir los permisos de los archivos
-t Conserva las fechas de modificación, haciendo que rsync ponga en el destino la misma fecha de modificación que tenía el archivo en origen
-g Conserva el identificador de grupo (GID)
-o Conserva el identificador de usuario (UID)
-D Copia dispositivos especiales es lo mismo que –devices –specials
-c Esta opción desactiva el checksum, solo utiliza el tamaño y la fecha de modificación para decidir si el archivo se transfiere o no
-z Emplea compresión a los datos durante la transferencia
–link-dest=DIR Crea enlaces (no copias) a los ficheros en DIR cuando no han cambiado
Vamos a utilizar el comando
rsync -avz --link-dest=/home/user/tmp/backup/actual/ passwd /home/user/tmp/backup/20190713_145816/
Con este comando, hemos creado una copia de seguridad enlazando los archivos que se encuentran en /home/user/tmp/backup/actual/passwd a la ruta /home/user/tmp/backup/20190713_145816/ Lo importante de esta orden es el link dest ya que nos permite crear una copia de seguridad, enlazando a los archivos que encuentre en la ruta de link dest, este es el motivo por el que es incremental dado que solo copia los archivos nuevos, los archivos que ya estén los enlaza por lo que no aumenta el tamaño.
Hay que borrar el directorio actual mediante el comando
rm -rf backup/actual/
y crear un enlace simbólico que apunte al nuevo directorio actual
ln -s backup/20190713_145816/ backup/actual
Segundo paso: Cifrado con EncFS
Al igual que antes, vamos a aprender un poco sobre EncFs. EncFS es un sistema de archivos criptográfico gratuito basado en FUSE. Encripta los archivos, utilizando un directorio arbitrario como almacenamiento para los archivos encriptados.
Los archivos se cifran mediante una clave de volumen, que se almacena dentro o fuera del directorio de origen cifrado. Se utiliza una contraseña para descifrar esta clave. Hay que aclarar que no es un volumen cifrado sino que es un sistema de archivos cifrados, no se modifica todo el volumen, únicamente los archivos deseados. Aquí tenéis más información
Instalación:
Para instalar EncFS únicamente hay que ejecutar el siguiente comando
sudo apt-get install encfs
El programa encfs funciona escribiendo encfs la ruta en la que queremos guardar el contenido cifrado y la ruta en la que vamos a guardar el contenido sin cifrar.
encfs /home/user/Desktop/clave/cifrada /home/user/Desktop/clave/sincifrar
por ejemplo, en este caso he guardado el contenido cifrado en el escritorio en una carpeta llamada clave y en el mismo directorio otra carpeta llamada sincifrar. Si queréis que no se pueda ver el archivo cifrado a simple vista, podéis ocultarlo poniendo un punto delante por ejemplo: .cifrada
Cuando estamos ejecutando encfs, en caso de que el directorio en el que queremos crear el archivo cifrado y descifrado, no está creado, nos brindará la opción de crearlo.
Una vez creado el directorio, nos pedirá que elegir entre dos opciones, el modo experto [x] o el modo preconfigurado [p] nosotros vamos a utilizar el modo preconfigurado.
Ahora nos pedirá la contraseña para crear el volumen cifrado
Y nos pedirá una confirmación de la contraseña.
Necesitas recordar esta contraseña ya que no existe ninguna forma de recuperarla. La contraseña se puede cambiar usando el comando encfsctl
Por tanto, con encfs se crea el volumen cifrado que vamos a dedicar a nuestra copia de seguridad, el cual posteriormente subiremos a la nube.
Con EncFS se monta la unidad, para desmontarla hay que usar
fusermount -u /home/user/Desktop/clave/sincifrar
NO SE DEBE TOCAR NUNCA EL DIRECTORIO CIFRADO A MANO
Como podéis ver en este ejemplo, he creado dos directorios, el directorio “encriptado” y el “plano”. Ambos estan vacios pero cuando copio tres archivos en el directorio “plano” en el directorio cifrado aparecen unos archivos con nombres muy extraños. Estos archivos son los tres archivos que he copiado en el directorio plano pero están cifrados.
Tercera parte: subiendo la copia a la nube con Rclone
Rclone, es una herramienta de línea de comandos que te permite transferir archivos locales a sistemas de almacenamiento en la nube, como google drive, a veces conocido como rsync para la nube, es una herramienta escrita en Go que se utiliza para transferir datos desde o hacia un ordenador y un centro de almacenamiento de datos alojado en la nube. diferentes.
Para instalar o actualizar Rclone utilizaremos el comando:
curl https://rclone.org/install.sh | sudo bash
una vez que ya hemos instalado rclone, vamos a configurarlo. Eso lo hacemos ejecutando el comando: rclone config
Yo voy a configurar rclone con google drive, que es donde voy a guardar mi backup
Configuración:
- Seleccionaremos “new remote” [n]
- Escribiremos el nombre que queramos darle, en mi caso “backup”
- Seleccionaremos donde queremos almacenar el backup. Da igual escribir “drive” que poner el número “12”
- Id. de cliente de la aplicación de Google: dejarlo en blanco normalmente.
- Secreto de cliente de la aplicación Google – dejar en blanco normalmente
- Ahora elegiremos el tipo de acceso que va a tener rclone a nuestro drive. En mi caso voy a elegir la opción 1 (acceso total)
- ID de la carpeta raíz – dejar en blanco normalmente
- Credenciales de cuenta de servicio Ruta de archivo JSON: necesaria sólo si desea utilizar SA en lugar de un inicio de sesión interactivo.
- Para usar la configuración automática [Y]
Ahora deberíais ver en vuestro navegador una ventana como la siguiente
En caso de que vuestro navegador no lo abra automáticamente, tenéis que ir a la ruta:
Aquí, tenéis que permitir que rclone tenga acceso a nuestra cuenta.
Ahora volveremos a la terminal y nos preguntará que si el “access_token” es correcto. Si todo ha ido bien, darle a Yes [Y]
Y ya tendremos todo configurado.
Si hemos hecho todo bien hasta ahora, con el comando:
rclone lsd copiaseguridad:/
podremos listar los archivos que tendremos en nuestro drive
Ahora nos toca sincronizar nuestro backup cifrado con nuestro Drive. Tenemos que usar el parámetro sync en vez del copy dado que lo que queremos hacer es una copia idéntica del volumen cifrado para así evitar problemas de integridad. Esto lo hacemos con el comando:
rclone sync /root/prueba1/ copiaseguridad:/
Si agrupamos estas tres herramientas conseguimos copias incrementales, cifradas y en la nube.
Si os gustaría aprender cómo hacer copias de seguridad de una manera mucho más fácil, aquí os dejo un enlace.
Espero que os haya gustado.
Un saludo
DiegoAltF4
Inicio
Gonzo dice
Un tutorial cojonudo muy bueno pero creo desde mi humilde opinión que esto esta mal o no no entiendo:
Ahora vamos a crear un subdirectorio llamado actual mediante el comando
mkdir backup/$(date +%Y%m%d_%H%M%S)
Espero tu critica constructiva, como la mía. Un saludo y gracias.
diegoaltf4 dice
Hola Gonzo, tengo que darte las gracias y reconocer que estabas en lo cierto. Como viste, estaba repetido el comando. Muchas gracias de nuevo, ya está todo solucionado.
Me alegra saber que te ha gustado el artículo.
Un saludo
DiegoAltF4