#!/bin/bash
. /home/jesus/.hass
. /home/jesus/.autocompose/bin/activate

# 1. Definimos los nombres de archivo AQUÍ dentro
FECHA_LOG=$(date +"%Y-%m-%d")
LOG_DIR="/home/jesus"
LOG_FILE="$LOG_DIR/backupresult_$FECHA_LOG.log"
# Opcional: Si quieres un reporte HTML en la carpeta www de HA
HTML_FILE="/home/jesus/homeassistant/www/backup_report.html" 

# 2. Redirigimos TODO lo que pase en este script al archivo de log
#    exec > ... redirige stdout (1)
#    2>&1 ... redirige stderr (2) al mismo sitio que stdout (1)
#    Así tienes errores y aciertos en el mismo archivo cronológico (mejor para el reporte)
exec > "$LOG_FILE" 2>&1

echo "--- INICIO DE BACKUP: $(date) ---"


fecha=$(date +"%Y-%m-%d")
viejos=$(date -d "3 month ago" +"%Y-%m-%d")

hass-cli service call input_datetime.set_datetime --arguments "entity_id=input_datetime.backup_inicio,datetime=$(date +"%Y-%m-%d %H:%M:%S")"


### Encendemos el enchufe del disco USB de 18TB via home assistant
hass-cli state turn_on switch.regleta_servidor_outlet_3

### Esperamos a que el disco esté listo
while true; do
    #if blkid | grep "7484070D8406D212"; then
    if ls -l /dev/disk/by-uuid/7484070D8406D212; then
        echo "El dispositivo USB (7484070D8406D212) está conectado."
        break  # Sale del bucle si el dispositivo está conectado
    else
        echo "Esperando a que se conecte el dispositivo USB..."
        sleep 5  # Puedes ajustar el intervalo de verificación según tus necesidades
    fi
done


### Montamos el disco USB de 18TB
sudo mount -t ntfs-3g /dev/disk/by-uuid/7484070D8406D212 /media/USB18TB -o uid=1000 -o gid=1000

### Creamos las rutas necesarias, por si no existen...
mkdir -p /media/USB18TB/BackUp/filesystems
mkdir -p /media/USB18TB/BackUp/paquetes
mkdir -p /media/USB18TB/BackUp/cron
mkdir -p /media/USB18TB/BackUp/containers/$fecha

### Sincronizamos OCI con local antes de comenzar el backup como tal
sudo rsync -arvhi -e "ssh -i /home/jesus/.ssh/oci.key" --rsync-path="sudo rsync" ubuntu@158.179.212.162:/home/ubuntu/justhost/public_html/ /mnt/18tb/justhost/public_html/
sudo rsync -arvhi --ignore-errors --exclude="justhost/" --exclude="nextcloud/data/adrenaline/" --exclude="nextcloud/data/appdata_oc0ar70uwq5m/" --exclude="nextcloud/data/benelux25/" --exclude="nextcloud/data/benelux/" --exclude="nextcloud/data/files_external/" --exclude="nextcloud/data/jesus/" -e "ssh -i /home/jesus/.ssh/oci.key" --rsync-path="sudo rsync" ubuntu@158.179.212.162:/home/ubuntu/ /mnt/18tb/oci/

### Copiamos los directorios
sudo rsync -arvhi /home/jesus/ /media/USB18TB/BackUp/filesystems/home/jesus
sudo rsync -arvhi /mnt/18tb/nextcloud/ /media/USB18TB/BackUp/filesystems/nextcloud
sudo rsync -arvhi /mnt/18tb/plex/ /media/USB18TB/BackUp/filesystems/plex
sudo rsync -arvhi /mnt/18tb/justhost/public_html/ /media/USB18TB/BackUp/filesystems/justhost/public_html
sudo rsync -arvhi /mnt/18tb/oci/ /media/USB18TB/BackUp/filesystems/oci

### Copiamos los paquetes instalados y borramos los de mas de 3 meses
dpkg --get-selections > "/media/USB18TB/BackUp/paquetes/paquetes_$fecha.txt"
find /media/USB18TB/BackUp/paquetes -type f -name "paquetes_*.txt" -mtime +90 -exec rm {} \;


### Copiamos los crontab y borramos los de mas de 3 meses
crontab -l >  "/media/USB18TB/BackUp/cron/cron_$fecha.txt"
find /media/USB18TB/BackUp/cron -type f -name "cron_*.txt" -mtime +90 -exec rm {} \;

### Copiamos YAML de todos los contenedores que estan corriendo y eliminamos los de mas de 3 meses
nombres_contenedores=$(docker ps -a --format '{{.Names}}')
### desactivo esto ya que lo hago al principio, ya no se pueden instalar paquetes python systemwide si no son repositorios de ubuntu
### y entonces ya no tengo acceso al hass-cli
### source /home/jesus/.autocompose/bin/activate
for nombre in $nombres_contenedores
do
    python3 autocompose.py $nombre > /media/USB18TB/BackUp/containers/$fecha/$nombre.yml
done
### desactivo esto ya que lo hago al principio, ya no se pueden instalar paquetes python systemwide si no son repositorios de ubuntu
### y entonces ya no tengo acceso al hass-cli
### deactivate

rm -rf /media/USB18TB/BackUp/containers/$viejos

rm -f /media/USB18TB/BackUp/filesystems/home/jesus/salida* /media/USB18TB/BackUp/filesystems/home/jesus/nc_* /media/USB18TB/BackUp/filesystems/home/jesus/backupresult_$viejos*


### Enviamos mail/notificacion homeassistant/loquesea con el resultado



### Desmontamos el disco USB de 18TB
sudo umount /dev/disk/by-uuid/7484070D8406D212

### Apagamos el disco USB de 18TB
sudo udisksctl power-off -b /dev/disk/by-uuid/7484070D8406D212

### Apagamos el enchufe del disco USB de 18TB via home assistant
hass-cli state turn_off switch.regleta_servidor_outlet_3

### Generamos el reporte HTML para visualizar en Home Assistant
echo "--- Generando reporte visual para Home Assistant ---"
python3 /home/jesus/generar_reporte_backup.py "$LOG_FILE" "$HTML_FILE"
hass-cli service call input_datetime.set_datetime --arguments "entity_id=input_datetime.backup_fin,datetime=$(date +"%Y-%m-%d %H:%M:%S")"

### activo esto ya que lo hago al principio, ya no se pueden instalar paquetes python systemwide si no son repositorios de ubuntu
### y entonces ya no tengo acceso al hass-cli
deactivate
exit







### Encendemos el enchufe del disco USB de 12TB via home assistant
hass-cli state turn_on switch.regleta_servidor_outlet_2
### Esperamos a que el disco esté listo

### Montamos el disco USB de 12TB
sudo mount -t ntfs-3g /dev/disk/by-uuid/62AA847EAA845109 /media/USB12TB -o uid=1000 -o gid=1000

### Copiamos los directorios
### Copiamos los paquetes instalados
### Copiamos los crontab
### Enviamos mail/notificacion homeassistant/loquesea con el resultado

### Desmontamos el disco USB de 12TB
sudo umount /dev/disk/by-uuid/62AA847EAA845109

### Apagamos el disco USB de 12TB
sudo udisksctl power-off -b /dev/disk/by-uuid/62AA847EAA845109

### Apagamos el enchufe del disco USB de 12TB via home assistant
hass-cli state turn_off switch.regleta_servidor_outlet_2
