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 $of
del 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.