Script de administración: Report diario con las copias de seguridad

Hola!

Tan sólo quería compartir que he desarrollado un pequeño script para que me mande un correo diario con los últimas copias de seguridad realizadas. De esta forma espero que sea sencillo darse cuenta si alguno no funciona bien.

Un saludo!

5 Me gusta

Hola,

Para dejarlo documentado, os paso el código (sin la información sensible). Este script lo tengo en un servidor mío (ya que centraliza varios proyectos), aunque se podría implementar des de cualquier otro, incluso una RPi.

Primero, copio mi llave pública en el servidor dónde se hacen las copias:
ssh-copy-id anartist@XX.XXX.XXX.XX

Y creo una carpeta dónde montar las copias de seguridad e instalo dependencias:

mkdir borgbackup
apt install sshfs borgbackup

Este es el cógido del script:

#!/bin/bash

cd /root

echo "BACKUP REPORT" > report.txt
echo "" >> report.txt

date  >> report.txt
echo "" >> report.txt

## Anartist
sshfs anartist@XX.XXX.XXX.XX:/home/anartist/borgbackup borgbackup/
echo "" >> report.txt
echo "ANARTIST" >> report.txt
### Audio
echo "Audio" >> report.txt
export BORG_PASSPHRASE='XXXXXXX'
borg list borgbackup/audio | tail -1 >> report.txt
### Blog
echo "Blog" >> report.txt
export BORG_PASSPHRASE='XXXXXXX'
borg list borgbackup/blog | tail -1 >> report.txt
### Cloud
echo "Cloud" >> report.txt
export BORG_PASSPHRASE='XXXXXXX'
borg list borgbackup/cloud | tail -1 >> report.txt
### Forum
echo "Forum" >> report.txt
export BORG_PASSPHRASE='XXXXXXX'
borg list borgbackup/forum | tail -1 >> report.txt
### Mail
echo "Mail" >> report.txt
export BORG_PASSPHRASE='XXXXXXX'
borg list borgbackup/mail | tail -1 >> report.txt
### Picto
echo "Picto" >> report.txt
export BORG_PASSPHRASE='XXXXXXX'
borg list borgbackup/picto | tail -1 >> report.txt
### Site
echo "Site" >> report.txt
export BORG_PASSPHRASE='XXXXXXX'
borg list borgbackup/site | tail -1 >> report.txt
### Social
echo "Social" >> report.txt
export BORG_PASSPHRASE='XXXXXXX'
borg list borgbackup/social | tail -1 >> report.txt
### Video
echo "Video" >> report.txt
export BORG_PASSPHRASE='XXXXXXX'
borg list borgbackup/video | tail -1 >> report.txt

fusermount -u borgbackup/

echo "Report finalizado!" >> report.txt

python mail.py "$(cat report.txt)"

Y el script “mail.py”:

import smtplib, ssl, sys

port = 587  # For SSL
smtp_server = "mail.anartist.org"
password = "XXXXXXXXX"
sender_email = "XXX@anartist.org"
receiver_email = "XXX@XXX.XXX"
subject = "Backup report"

message = """From: %s\nTo: %s\nSubject: %s\n\n%s""" % (sender_email, receiver_email, subject, sys.argv[1])

# Create a secure SSL context
context = ssl.create_default_context()

with smtplib.SMTP(smtp_server, port) as server:
    server.starttls(context=context)
    server.login(sender_email, password)
    server.sendmail(sender_email, receiver_email, message)

Y finalimente, configuro el cron:

0 6 * * * bash /root/report.sh
2 Me gusta

Pregunta sin prisa: ¿cómo estamos haciendo copias de seguridad hoy día? Y para estar seguro ¿se están haciendo copias de Podkasts también?

Y si esto es aún un problema: Lentitud en los servidores

1 me gusta

Los backups los estamos haciendo con borg. Está explicado aquí cómo lo implementé: Backups incrementales con Borg

No se están haciendo para Podkasts aún, pero lo podemos implementar muy rápido. Se puedes configurar los backups des de la interfaz? Luego yo configuraré el cron para que se copien al servidor externo de backups que tenemos.

@icaria36

1 me gusta

El Discourse de Podkasts ya está generando su copia de seguridad diaria. Sí, me refería a algún mecanismo para guardar la copia más reciente o así fuera del servidor por si acaso.

Genial, pues lo configuro en cuanto pueda. Lo guay de borg y los programas con copias incrementales es que se pueden almacenar muchas “versiones” sin que ocupen mucho más.

1 me gusta

En principio ya está. Mañana revisaré que se haya hecho bien la de esta noche. Un día te lo puedo explicar con calma, @icaria36.

1 me gusta