El script de copia de seguridad está bloqueado

El script de copia de seguridad está bloqueado

Tengo un script de respaldo para ejecutar como trabajo cron y crear una copia de seguridad diaria de /var/log/messages/. Tenga en cuenta que este script es más una experiencia de aprendizaje que una aplicación real. He agregado declaraciones if/else para verificar el código de salida después de ejecutar el comando tar. El script funcionaba bien antes, pero después de agregar esta función se bloquea. Código a continuación:

#!/bin/bash

admin="[email protected]"
of=messages-backup-$(date +%Y%m%d).tgz

cd /var/log/

tar -czvf $of messages

if [ $? -eq 0 ]; then
  mail -s "Backup of /var/log/messages was successful!" $admin
  exit 0
else
  mail -s "Backup of /var/log/messages has failed!" $admin
  exit 1
fi

cp $of /home/user/
rm -rf $of

Producción:

[root@nidesant2 Scripts]# ./backup.sh 
messages
^C
(Interrupt -- one more to kill letter)

Respuesta1

Cambiar

mail -s "Backup of /var/log/messages was successful!" $admin

a

echo hello | mail -s "Backup of /var/log/messages was successful!" $admin

o

mail -s "Backup of /var/log/messages was successful!" $admin < /dev/null

La primera opción, puedes usar el texto que quieras para el cuerpo del mensaje. La segunda opción enviará el correo electrónico con un cuerpo de mensaje vacío. Repita el mismo cambio para el segundo comando de correo electrónico para una copia de seguridad fallida.

Para fines de aprendizaje, debe verificar que se haya completado correctamente la creación del archivo tar, su copia y su eliminación antes de determinar si se realizó correctamente. Para hacer eso, puedes hacer esto.

Cambiar

tar -czvf $of messages

a

tar -czvf $of messages && cp $of /home/user/ && rm -rf $of

Además, con este cambio eliminarías cp $of /home/user/y rm -rf $ofdel final del script.

Luego, su if/else se ejecutará en función de la finalización exitosa de los tres comandos o de la finalización fallida de cualquiera de los tres comandos en esa cadena.

información relacionada