Introduction: Copia De Seguridad Local Con Raspberry

¡Buenas a todos! Justo acabo de terminar de realizar un
proyecto que automatiza una copia de seguridad de archivos importantes.

Personalmente, a mí me gusta instalar, desinstalar y/o modificar programas, funciones y sistemas operativos en mi ordenador, por lo que siempre que me ponía manos a la obra (sin realizar un punto de restauración o una copia de seguridad en una unidad flash previamente), corría el riesgo de perder mis archivos importantes de trabajo o de investigaciones personales. Por lo que se me ocurrió llevar a cabo un sistema de compresión y envío de ficheros desde mi PC hasta una raspberry pi.

Step 1: 1. Requisitos Previos.

Para poder realizar este proyecto, necesitamos:

- Raspberry pi (no importa el modelo o la versión).

- Memoria USB o HDD.

Se requiere poco material, porque la mayor parte de este proyecto es software ;)

Sin embargo, necesitamos que la raspberry tenga:

- SSH

- FTP

- IP estática (Fundamental para los dos programas anteriores).

- Un sistema operativo. En mi caso usé OSMC, pero puedes usar el que quieras.

En nuestro PC, los requisitos cambian en función al sistema operativo instalado:

- En Linux es donde es más sencillo implementarlo, ya que es más manipulable.

- En Windows cuesta un poco más de trabajo, pero lo explico paso por paso, ya que lo configuré con este SO.

- En macOS no lo he podido desarrollar.

Step 2: 2. Vamos Al Lío.

Voy a comenzar con la configuración para un
PC con WINDOWS:

1- Abrimos un bloc de notas en Windows.

2- Dentro de este bloc de notas, vamos a configurar un conjunto de líneas de comando que cree nuestro archivo comprimido. Para ello, debemos implementar el siguiente script:

echo @off

RAR a -r "C:\directorio donde queremos almacenar\creando nuestro zip.zip" "C:\directorio donde se encuentra el archivo a comprimir\Universidad"

del "C:\directorio donde se encuentra almacenado el antiguo zip\nuestro zip.zip"

rename "C:\directorio donde queremos almacenar\creando nuestro zip.zip" nuestro zip.zip

exit

guardáis el bloc de notas y le modificáis la extensión .txt por .bat, y ya tenéis vuestro archivo por lotes.

En mi caso, mi script borra la copia de seguridad anteriormente almacenada una vez que se ha creado la nueva, y le pone el mismo nombre que tenia la anterior. Si queréis ir haciendo historial de copias de seguridad os dejo este enlace para implementar bucles for en archivos .bat: http://profesoremiliobarco.blogspot.com.es/2012/0...

NOTA: debéis comprobar que vuestro símbolo del sistema os lee el comando RAR. Si os dice que no se reconoce el comando, os descargáis la aplicación winRAR, y una vez instalado, accedéis al disco duro>archivos de programas>WinRAR y copiáis el programa rar.exe, para pegarlo en la carpeta del disco duro>Windows>system32. Ejecutáis otra vez símbolo del sistema como administrador esta vez y volvéis a probar el comando, que debería funcionar ya.

3- Este paso es ya a gusto vuestro. Yo configuré Windows de manera que ejecutase el script al iniciar Windows. Si queréis podeis implementarlo también al iniciar sesión o al apagar equipo, o simplemente ejecutarlo cuando le déis click.

Debéis abrir el símbolo del sistema como administrador, y ejecutáis el siguiente comando: gpedit.msc.

Al ejecutarlo, se os abrirá una ventana como la siguiente: (ver imagen 1)

Prácticamente, la configuración de equipo como de usuario es igual, sólo que la configuración del equipo inicia el script desde su arranque, y la configuración de usuario inicia el script desde su inicio de sesión.

Clicamos donde queremos que se inicie automáticamente nuestro script y nos aparecerá una ventana como esta: (ver imagen 2)

Le damos a agregar, y nos pedirá el nombre del script, que lo buscamos en los directorios clicando en examinar…, y en parámetros del script añades un nombre cualquiera.

Y listo! ¡Ya tenemos configurado nuestro zip automático!

4- Ahora debemos configurar Windows para que trabaje con FTP. Para ello podemos seguir este tutorial donde se explica cómo configurarlo correctamente: http://www.ajpdsoft.com/modules.php?name=News&fil...

5- Lo siguiente será crear otro .bat nuevo que llame a la raspberry e inicie la transferencia de archivos:

REM Generamos el script. Sobreescribirá cualquier temp.txt

echo open IPraspberry>>temp.txt

echo usuario>> temp.txt

echo contraseña>> temp.txt

echo cd directorio_donde_tienes_el_usb>> temp.txt

echo delete antiguo_archivo.zip>> temp.txt

echo rename archivo.zip antiguo_archivo.zip

echo put archivo.zip>> temp.txt

echo bye>> temp.txt

REM abrimos FTP and con el script

ftp -s:temp.txt

REM eliminamos archivo temporal

del temp.txt

6- Puedes colocar el script al arranque como en el paso 3.

comenzar con la configuración para un PC con
LINUX:

es más fácil que con Windows si sabes manejar Linux! Pasemos a describir los pasos:

1- Abrimos gedit.

2- Dentro de este bloc de notas, vamos a configurar un conjunto de líneas de comando que cree nuestro archivo comprimido. Para ello, debemos implementar el siguiente script:

#!/bin/bash

cd directorio_donde_almacenamos_el_zip

zip nuevo_archivo.zip carpeta

rm archivo.zip

mv nuevo_archivo.zip archivo.zip

exit

En mi caso, mi script borra la copia de seguridad anteriormente almacenada una vez que se ha creado la nueva, y le pone el mismo nombre que tenía la anterior. Si queréis ir haciendo historial de copias de seguridad os dejo este enlace para implementar bucles for en scripts: http://ovtoaster.com/shell-scripts-en-linux-condicionales-y-bucles/

Ahora guardamos el script con el nombre que sea, como por ejemplo “script.sh”. Debemos de meternos en terminal y darle permisos:

cd directorio_donde_almacenamos_el_script

sudo chmod -x script.sh

y listo! Ya tenemos nuestro script creado! Para ejecutarlo debemos irnos al terminal, acceder al directorio donde se encuentra e introducir por línea de comando: ./script

3- Este paso es ya a gusto vuestro. Se puede configurar para que se inicie el script al arrancar el ordenador. Para ello, debemos seguir los siguientes pasos:

sudo cp script.sh /etc/init.d/

sudo chmod +x /etc/init.d/script.sh

sudo update-rc.d script.sh defaults

estas líneas de comandos copian el script a la carpeta init.d, que es donde se inicializan los servicios de Linux. Si en un futuro lo queremos desinstalar, basta con escribir en la terminal:

sudo update-rc.d -f script.sh remove

y si lo queremos eliminar por completo, escribimos

sudo rm /etc/init.d/script.sh

4- Debemos instalar FTP en Linux. Para ello escribimos en línea de comandos:

sudo apt-get install ftp

sudo apt-get upgrade

5- Una vez instalado FTP, pasamos a crear un nuevo script con el que hacer un ping a la raspberry a ver si está conectada en nuestra red:

#!/bin/bash

HOST='IPraspberrypi’

USER=’usuario’

PASSWD='contraseña'

FILE='archivo.zip'

if ping -c 1 $HOST &> /dev/null<

then

ftp -n $HOST

quote USER $USER

quote PASS $PASSWD

cd directorio_donde_tienes_el_zip

delete antiguo_archivo.zip

rename archivo.zip antiguo_archivo.zip

binary

put $FILE

quit

fi

END_SCRIPT

Exit

6- Puedes colocar el script al arranque como en el paso 3.

Step 3: Configuración De La Raspberry Para El Servicio De Envío De Datos.

Una vez que nuestro PC ya comprime nuestra información deseada, pasamos a configurar nuestra raspberry. Esta debe estar conectada a internet para poder usar este sistema de almacenamiento.

1- Debemos acceder a nuestra raspberry por SSH. Podemos usar PuTTY desde Windows, o la terminal desde Linux.

2- Una vez que accedemos a nuestra raspberry debemos de instalar FTP en ella, para ello introducimos:

sudo apt-get install ftp

sudo apt-get update

3- Ahora pasamos a formatear la unidad externa donde vamos a almacenar los datos. Lo vamos a hacer en formato Ext4, ya que aprovecha mejor el espacio que con FAT32 predeterminado de Windows, aunque es exclusivo de Linux. Para ello podemos seguir este tutorial: https://raspberryparatorpes.net/proyectos/formatear-disco-en-ext4-preparando-un-nas-o-servidor-casero-1/

¡Y hasta aquí el tutorial! Espero que lo disfrutéis y me comentéis posibles problemas! un saludo.

IoT Builders Contest

Participated in the
IoT Builders Contest