2 votos

Script que compara 2 tamaños de archivo y da un mensaje de advertencia

Soy un completo noob en secuencias de comandos, pero necesito un script que se va a comparar el tamaño de dos archivos y dar una advertencia en caso de que uno de esos archivos es 10% más grande que el otro.

Hasta el momento, se me ocurrió esto :

#!/bin/bash
test1=/trans/home/user/test1
test2=/trans/home/user/test2
test1=$(stat -c%s "$test1")
test2=$(stat -c%s "$test2")

if (( test2 > 110 * test1 ))
then
  echo "WARNING: test2 has increased 10% or more in size"
fi

He creado dos archivos con toque y vanamente sus tamaños con truncate. No importa lo que los tamaños que les doy, esto no va a dar el mensaje de advertencia,a Menos que el interruptor de la mayor de signo<, entonces se da el mensaje de advertencia. Sin embargo, esto no funciona para mí.

Alguna idea de cómo editar este trabajo será apreciado.

Saludos.

3voto

RalfFriedl Puntos 131

Necesitas

 if (( test2 > 110 * test1 / 100))
 

el tamaño más el 10% es 1.10 o 110/100, no 110. Tenga en cuenta que primero debe multiplicar y luego dividir; de lo contrario, 110/100 redondeado a un número entero es solo 1,00. Por otro lado, 110 * test1 puede exceder el rango entero, lo que no es probable con tamaños de archivo y enteros de 64 bits.

2voto

Alex Puntos 374

Tu matemática no es correcta. Debajo hay un script que usa bc calculadora de precisión que puede hacer operaciones de punto flotante sin preocuparse por el desbordamiento en bash

 #!/bin/bash

test1=/trans/home/user/test1
test2=/trans/home/user/test2
test1sz=$(stat -c%s "$test1")
test2sz=$(stat -c%s "$test2")

[ $(echo "scale=2; ${test2sz} > ${test1sz}*1.1" | bc) -eq 1 ] && {
  echo "WARNING: ${test2} has increased 10% or more in size"
}
 

0voto

stefzeer Puntos 51

Se las arregló para hacerlo así:

 #!/bin/bash
test1=/trans/home/stefan01/test1
test2=/trans/home/stefan01/test2
test1=$(stat -c%s "$test1")
test2=$(stat -c%s "$test2")
PERC=$(bc <<< "scale=2; ($test2 - $test1)/$test1 * 100")
echo "$PERC %"
 

Esto muestra la diferencia exacta del tamaño del archivo en porcentajes. Ahora puedo simplemente mostrar si aparece un mensaje de advertencia si el resultado es 10% o más.

Gracias por su ayuda chicos.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: