El script que os presento sirve para realizar copiar de seguridad de vuestros datos. Lo uso para mantener la información sincronizada entre dos ordenadores con los que trabajo. Para ello uso un pendrive.
El script lo tenéis al final del artículo, sólo tenéis que copiarlo en vuestro editor de texto favorito y guardarlo con el nombre: copia_seguridad.sh
Después debéis ejecutar:
chmod +x copia_seguridad.sh
Y copiarlo a /usr/local/bin
¿Cómo usar este script?
Debes crear una carpeta que se llame almacen con la orden:
mkdir ~/almacen
Una vez creada copia allí todos los ficheros de los que quieras mantener una copia de seguridad.
Después ejecuta:
copia_seguridad.sh total /...(directorio de copias de seguridad, puede ser un pendrive)
Una vez hecha la copia de seguridad total cada vez que modifiques algo y desees guardar una copia de seguridad ejecuta:
copia_seguridad.sh incremental /...(directorio de copias de seguridad, puede ser un pendrive)
Sólo copiará los ficheros que hayan sido actualizados.
Para extraer la copia de seguridad, por ejemplo, en otro ordenador con el que quieras mantener la información sincronizada, ejecuta:
copia_seguridad.sh extraer /...(directorio de copias de seguridad, puede ser un pendrive)
Sólo se extraerán los ficheros que hayan sido actualizados, en el caso de que ya hayas hecho sincronizaciones previas entre los equipos.
#!/bin/bash
if [[ $1 =~ (total|incremental|extraer) ]]; then
echo 'Comenzando...'
else
echo $0 '[total|incremental|extraer] directorio'
exit 0
fi
function quitarDirectorios
{
while read a ; do
if [[ -d $a ]]; then
#echo $a es un directorio
continue
else
echo $a
fi
done
}
almacen=`echo ~/almacen`
if [[ -e $2 ]]; then
echo Verificado path a $2
cd "$2"
pathSalida=`pwd`
else
echo Archivo $2 no encontrado
exit 0
fi
if [[ $1 == incremental ]]; then
fecha=`cat "$pathSalida/ultimaFechaCopia.txt"`
fechaAlmacen=`cat "$almacen/ultimaFechaCopia.txt"`
fi
cd "$almacen"
if [[ $1 == extraer ]]; then
if [[ $fecha == $fechaAlmacen ]]; then
echo Copias totales coinciden
else
echo Actualizando copias totales
for a in `ls "$pathSalida"/*.total.tar.gz`; do
tar -xzf "$a"
done
fi
echo Actualizando copias incrementales
for a in `ls "$pathSalida"/*.incremental.tar.gz`; do
tar -xzvf "$a" | quitarDirectorios
done
exit 0
fi
for a in `ls`; do
if [[ $a == ultimaFechaCopia.txt ]]; then
echo Omitido $a
else
if [[ $1 == incremental ]]; then
echo Copia incremental de $a
tar -czvf "$pathSalida/$a.incremental.tar.gz" "$a" --after-date="$fecha" 2> /dev/null | quitarDirectorios
elif [[ $1 == total ]]; then
echo Copia total de $a
tar -czf "$pathSalida/$a.total.tar.gz" "$a"
fi
fi
done
if [[ $1 == total ]]; then
date +"%F %X" > "$pathSalida/ultimaFechaCopia.txt"
cp "$pathSalida/ultimaFechaCopia.txt" "$almacen"
rm -Rf "$pathSalida"/*.incremental.tar.gz
fi
Comentarios
Enviar nuevo comentario