Copia de seguridad local con Raspberry

¿Has creado algún proyecto genial con una Raspberry Pi? Este es tu lugar.
Responder
Avatar de Usuario
hosky
Pi Newbie
Pi Newbie
Mensajes: 2
Registrado: 13 Nov 2016, 13:23
Agradecido: 0
Agradecimiento recibido: 0

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

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.

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:

Código: Seleccionar todo

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 ... s-bat.html

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:
Captura.PNG
Captura.PNG (8.97 KiB)
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:
Captura2.PNG
Captura2.PNG (6.13 KiB)
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?nam ... le&sid=461

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

Código: Seleccionar todo

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:

Código: Seleccionar todo

#!/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-l ... -y-bucles/

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

Código: Seleccionar todo

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:

Código: Seleccionar todo

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:

Código: Seleccionar todo

sudo update-rc.d -f script.sh remove
y si lo queremos eliminar por completo, escribimos

Código: Seleccionar todo

sudo rm /etc/init.d/script.sh
4- Debemos instalar FTP en Linux. Para ello escribimos en línea de comandos:

Código: Seleccionar todo

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:

Código: Seleccionar todo

#!/bin/bash
HOST='IPraspberrypi’
USER=’usuario’
PASSWD='contraseña'
FILE='archivo.zip'

if ping -c 1 $HOST &> /dev/null<<END_SCRIPT
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 .

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:

Código: Seleccionar todo

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/proyect ... -casero-1/
¡Y hasta aquí el tutorial! Espero que lo disfrutéis y me comentéis posibles problemas ;)un saludo.
Avatar de Usuario
Kike
Administrador
Administrador
Mensajes: 2311
Registrado: 13 May 2016, 18:53
Ubicación: Islas Baleares - Menorca
Agradecido: 47 veces
Agradecimiento recibido: 175 veces
Contactar:

Muchísimas gracias por este fantástico tutorial !! Buen trabajo :roll:
¡ Perfectamente redactado y muy bien explicado ! :mrgreen:
Si lo puedes soñar, lo puedes hacer
Avatar de Usuario
Gubenote
Pi Omega
Pi Omega
Mensajes: 58
Registrado: 21 Oct 2016, 09:50
Agradecido: 0
Agradecimiento recibido: 0

Increible. Llevo buscando algo así desde hace varias semanas y resulta que la solución la tenía en casa :mrgreen: :mrgreen: :mrgreen:

Hasta ahora había encontrado rdiff, que también sincroniza carpetas, pero no he llegado a probarlo.

Voy a hacerlo con tu tutorial que tiene muy buena pinta.

Ya seria la leche si explicases como hacerlo para tener la PI en otro lugar, es decir, sin compartir la red
Responder