09-04-2020, 09:29 AM
(08-04-2020, 05:38 PM)damian.salum@gmail.com escribió: Perfecto Ganekogorta! es lo que necesito! que compirma los archivos luego del backup, que borre los antiguos y que los envie a un Nas remoto.Hola Damián
Tienes la linea para compartir?
Gracias!
Te paso unas líneas de código de un script para que te bases en ello.
No está depurado del todo ya que se debería usar mas variables al inicio para evitar usar rutas en las lineas posteriores.
Y los usuarios que sepan de bash, que me perdonen, pero soy novato en ello.
Hay comentarios que espero que te sirvan para que te hagas uno nuevo.
Algunos de estos comentarios, si los descomentas te muestran información.
Código:
#! /bin/bash
inicio=$(date)
ruta="/share/CACHEDEV1_DATA/Public/BBDD"
lruta=${#ruta}
ruta1="/share/CACHEDEV1_DATA/Public/BBDD1"
#las copias sin comprimir tienen extension .bak y se encuentran en la siguiente ruta
rutaBBDD="/share/CACHEDEV1_DATA/MSSQL/Backup_GG"
#en esta ruta anterior quedan los "copias" últimos archivo comprimidos y se eliminan los archivos bak
# Obtener los archivos de la última copia y saco fecha de ultimo comprimido
ls -d -1 $ruta/*/> $ruta1/listadirectorios.txt
nocomprimidos=$(wc -l $ruta1"/listadirectorios.txt" | awk '{print $1}')
ciclos=$((nocomprimidos))
inicial=1
fechamax="20000101"
for (( c=$inicial; c<=$ciclos; c++ ))
do
read line
#calculo la longitud total de la ruta con nombre y extension
largocompleto=${#line}
fechafic=${line:$((largonombre-16)):8}
if [ $fechafic -gt $fechamax ] ; then
fechamax=$fechafic
fi
done< $ruta1/listaSQLzip2.txt
#echo "fecha maxima $fechamax"
#ahora lo convierto en fecha y le resto los dias a mantener (copias)
copias=6
anyofic=${fechamax:0:4}
mesfic=${fechamax:4:2}
diafic=${fechamax:6:2}
anyo=$(date +%Y)
mes=$(date +%m)
dia=$(date +%d)
#echo "diamax $diafic, mesmax $mesfic y añomax $anyofic"
#echo "actual dia $dia, mes $mes y año $anyo"
fecha1=$(date -d "$fecha1" +$((anyofic))$((mesfic))$((diafic)))
fecha1=$((fecha1-copias))
#ahora borro los comprimidos mas viejos para tener la n copias ultimas
for (( c=$inicial; c<=$ciclos; c++ ))
do
read line
largocompleto=${#line}
fechafic=${line:$((largonombre-16)):8}
#echo "fechafic=$fechafic y fecha1=$fecha1 "
if [ $fecha1 -gt $fechafic ] ; then
rm -f $line
#echo "borrado fechafic=$fechafic y fecha1=$fecha1 "
fi
done< $ruta1/listaSQLzip2.txt
#inicio la compresion de los archivos BAK
echo "hora inicio BBDD "$inicio
ls -At -1 $ruta/*.BAK> $ruta1/listaSQLzip.txt
nocomprimidos=$(wc -l "/share/CACHEDEV1_DATA/MSSQL/listaSQLzip.txt" | awk '{print $1}')
ciclos=$((nocomprimidos))
#echo " inicio buble de $nocomprimidos ciclos"
inicio=1
i=1
for (( c=$inicio; c<=$ciclos; c++ ))
do
read line
#calculo la longitud total de la ruta con nombre y extension
largocompleto=${#line}
#calculo la longitud total del nombre archivo con extension
largonombre=$((largocompleto-lruta))
#calculo la longitud del path al archivo
base=$((largocompleto-largonombre))
#calculo la longitud del nombre del archivo sin fecha, ni extension
nombrecorto=${line:$((base)):$((base-16))}
largonombrecorto=${#nombrecorto}
largonombrecorto=$((largonombrecorto))
#echo "ciclo=$i linea $largocompleto, nombre $largonombre, abreviado $largonombrecorto y base $base"
((i = i + 1))
#echo "Proceso /share/CACHEDEV1_DATA/MSSQL/Backup_GG${line:$((base)):$((largonombre-4))}"
zip $rutaBBDD${line:$((base)):$((largonombre-4))} $line
#echo compruebo si existe el comprimido zip y borro el original
if [ -f $rutaBBDD${line:$((base)):$((largonombre-4))}.zip ] ; then
#echo "borro el archivo $rutaBBDD${line:$((base)):$((largonombre-4))}.BAK"
rm -f $rutaBBDD${line:$((base)):$((largonombre-4))}.BAK
fi
done < $ruta1/listaSQLzip.txt
Un saludo
Agur eta ondo ibili
Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η
Agur eta ondo ibili
Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η