Compresion automatica de archivos
#1
Buenos días Estimados, como estan? espero que muy bien. Alguien sabe si se puede automatizar una compresión de archivos en qnap? 

les cuento un poco el escenario: 

estoy utilizando HBS 3 para realizar los BKP de carpetas locales en Qnap a otra carpeta también local en el mismo Qnap llamada BKP (por si alguien borra algun archivo que no debia). quisiera que estos archivos que van a la carpeta BKP se compriman automáticamente. Con HBS 3 no encontre opción para comprimir. Luego de estar comprimidos los envío a otro Qnap Remoto.

Si a alguien se le ocurre algo mejor...que no tenga vergüenza de decirlo! Smile  muchisimas gracias.

Salute!
  Responder
#2
(28-02-2020, 08:14 PM)damian.salum@gmail.com escribió: Buenos días Estimados, como estan? espero que muy bien. Alguien sabe si se puede automatizar una compresión de archivos en qnap? 
Como tal no, hay que lanzar un proceso.
(28-02-2020, 08:14 PM)damian.salum@gmail.com escribió: les cuento un poco el escenario: 

estoy utilizando HBS 3 para realizar los BKP de carpetas locales en Qnap a otra carpeta también local en el mismo Qnap llamada BKP (por si alguien borra algun archivo que no debia). quisiera que estos archivos que van a la carpeta BKP se compriman automáticamente. Con HBS 3 no encontre opción para comprimir. Luego de estar comprimidos los envío a otro Qnap Remoto.

Si a alguien se le ocurre algo mejor...que no tenga vergüenza de decirlo! Smile  muchisimas gracias.

Salute!
Bueno, como lo haces con HBS3, realmente haces sincronizaciones (incluso con versiones) de archivos y carpetas. Éstas, en destino están sin comprimir. Es normal ya que piensa que las sincronizaciones pueden ir en dos direcciones (no sólo enviar, también te pueden venir archivos).

Como quieres enviarlos fuera, hacia otro nas, qnap si es capaz de comprimirlo/descomprimirlo, pero sólo durante la transmisión para ahorrar tráfico en la red.

Yo tengo un caso similar a lo que buscas. Comprimo en zip antes de enviar y envío un archivo zip al destino. Pero yo lo hago por el siguiente motivo, los archivo son pocos y grandes (varias decenas de GBs). Provienen de un backup de una base de datos.
Los pasos son básicamente los siguientes:
-acaba el backup de la BBDD
-lanzo un script que comprime todos los archivo no zip de esa carpeta
-borra los que tienen más de x días de antigüedad
-luego los envía a una máquina remota por ssh mediante un rsync.

La pega de este sistema es que para recuperar hay que hacer el proceso manualmente. Descomprimir manualmente, copiarlo a la máquina inicial y en mi caso restaurar la BBDD.
La ventaja es que alguno de los archivos es de unos 35GB y comprimido ocupa mucho menos.
Un saludo

Agur eta ondo ibili

Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η
  Responder
#3
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.

Tienes la linea para compartir?

Gracias!
  Responder
#4
(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.

Tienes la linea para compartir?

Gracias!
Hola Damián

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η
  Responder




Usuarios navegando en este tema: 1 invitado(s)