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](https://content.instructables.com/FBI/98E3/ITW2KLZO/FBI98E3ITW2KLZO.jpg?auto=webp&frame=1&width=320)
Participated in the
IoT Builders Contest