66 lines
2.2 KiB
Bash
66 lines
2.2 KiB
Bash
#!/bin/bash
|
|
|
|
#########################################################
|
|
# #
|
|
# Script Backup Gitea + còpia remota + retenció dies #
|
|
# + email + mida + temps + integritat #
|
|
# #
|
|
#########################################################
|
|
|
|
# Assegurar els paths per al cron
|
|
PATH=$PATH:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
|
|
|
|
# --- CONFIGURACIÓ ---
|
|
GITEA_DIR="/opt/gitea"
|
|
BACKUP_FILE="gitea-backup_$(date +%Y-%m-%d_%H-%M-%S).tar.gz"
|
|
REMOTE_SERVER="estudiset.backups"
|
|
REMOTE_PATH="/home/debian/backups/studi7/gitea/"
|
|
EMAIL="roger@estudiset.cat"
|
|
RETENTION_DAYS=7
|
|
|
|
# Dump gitea
|
|
su - gitea -s /bin/bash -c "$GITEA_DIR/gitea dump -c $GITEA_DIR/custom/conf/app.ini --file $GITEA_DIR/$BACKUP_FILE --tempdir $GITEA_DIR/"
|
|
|
|
# Mida del backup
|
|
BACKUP_SIZE=$(du -h "$GITEA_DIR/$BACKUP_FILE" | awk '{print $1}')
|
|
|
|
# Hash local
|
|
LOCAL_HASH=$(sha256sum "$GITEA_DIR/$BACKUP_FILE" | awk '{print $1}')
|
|
|
|
# --- ENVIAR A SERVIDOR REMOT ---
|
|
rsync -AaxzPh --remove-source-files "$GITEA_DIR/$BACKUP_FILE" "$REMOTE_SERVER:$REMOTE_PATH"
|
|
if [ $? -ne 0 ]; then
|
|
echo "ERROR: No s'ha pogut copiar el backup al servidor remot." | mail -s "[Backup Gitea] ERROR" "$EMAIL"
|
|
exit 1
|
|
fi
|
|
|
|
# --- HASH REMOT ---
|
|
REMOTE_HASH=$(ssh "$REMOTE_SERVER" "sha256sum ${REMOTE_PATH}/${BACKUP_FILE} 2>/dev/null | awk '{print \$1}'")
|
|
|
|
if [ "$LOCAL_HASH" = "$REMOTE_HASH" ]; then
|
|
INTEGRITY="OK — la còpia és idèntica"
|
|
else
|
|
INTEGRITY="ERROR — el hash no coincideix!"
|
|
fi
|
|
|
|
# --- RETENCIÓ DE 7 DIES ---
|
|
ssh "$REMOTE_SERVER" "find $REMOTE_PATH -type f -mtime +$RETENTION_DAYS -name 'gitea-backup_*.tar.gz' -delete"
|
|
|
|
# --- EMAIL DE RESULTAT ---
|
|
MSG="Backup de Gitea completat correctament.
|
|
|
|
Servidor remot: $REMOTE_SERVER
|
|
Ruta: $REMOTE_PATH
|
|
Fitxer: $BACKUP_FILE
|
|
Mida: $BACKUP_SIZE
|
|
|
|
Integritat:
|
|
- Hash local: $LOCAL_HASH
|
|
- Hash remot: $REMOTE_HASH
|
|
- Estat: $INTEGRITY
|
|
|
|
Retenció: S'han eliminat backups de més de 7 dies."
|
|
|
|
echo "$MSG" | mail -s "[Backup Gitea] OK" "$EMAIL"
|
|
|
|
echo "$MSG" |