haven notify!
All checks were successful
Check scripts syntax / check-scripts-syntax (push) Successful in 2s
Haven Notify Build and Deploy / Build Haven Notify Image (amd64) (push) Successful in 24s
Haven Notify Build and Deploy / Deploy Haven Notify (push) Successful in 10s

This commit is contained in:
2025-08-16 22:31:54 -03:00
parent 20ef0eb4b5
commit a32bcb34a3

View File

@@ -4,12 +4,24 @@
# Variables # Variables
SERVER_FILE="https://git.ivanch.me/ivanch/server-scripts/raw/branch/main/backup.sh" SERVER_FILE="https://git.ivanch.me/ivanch/server-scripts/raw/branch/main/backup.sh"
SERVER_OK=1 SERVER_OK=1
HOSTNAME=$(cat /etc/hostname)
# Check if the server file exists # Check if the server file exists
curl -s --head $SERVER_FILE | head -n 1 | grep -E "HTTP/[12] [23].." > /dev/null curl -s --head $SERVER_FILE | head -n 1 | grep -E "HTTP/[12] [23].." > /dev/null
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
NOTIFY_URL="http://notify.haven"
# Function to send notification
send_notify() {
local title="$1"
local message="$2"
curl -s -X POST "$NOTIFY_URL" \
-H "Content-Type: application/json" \
-d "{\"title\": \"$title\", \"message\": \"$message\"}"
}
echo "Error: $SERVER_FILE not found." >&2 echo "Error: $SERVER_FILE not found." >&2
send_notify "[Docker Backup][$HOSTNAME] Error" "❌ <span style='color:red'>Server file not found:</span> $SERVER_FILE"
SERVER_OK=0 SERVER_OK=0
fi fi
@@ -48,19 +60,34 @@ REMOTE_DIR="/export/Backup/Docker/$(cat /etc/hostname)"
# Create a compressed backup file # Create a compressed backup file
zip -r $BACKUP_FILE $SOURCE_DIR zip -r $BACKUP_FILE $SOURCE_DIR
# Create a compressed backup file
if ! zip -r $BACKUP_FILE $SOURCE_DIR; then
send_notify "Backup Error" "❌ <span style='color:red'>Failed to create backup archive for:</span> $SOURCE_DIR"
exit 1
fi
# Check if remote path exists # Check if remote path exists
ssh $REMOTE_USER@$REMOTE_HOST "mkdir -p $REMOTE_DIR" if ! ssh $REMOTE_USER@$REMOTE_HOST "mkdir -p $REMOTE_DIR"; then
send_notify "[Docker Backup][$HOSTNAME] Error" "❌ <span style='color:red'>Failed to create remote directory:</span> $REMOTE_DIR on $REMOTE_HOST"
exit 1
fi
# Transfer the backup file to the remote server # Transfer the backup file to the remote server
scp $BACKUP_FILE $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR if ! scp $BACKUP_FILE $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR; then
send_notify "[Docker Backup][$HOSTNAME] Error" "❌ <span style='color:red'>Failed to transfer backup file to remote server:</span> $REMOTE_HOST:$REMOTE_DIR"
exit 1
fi
# Remove the backup file # Remove the backup file
rm $BACKUP_FILE rm $BACKUP_FILE
# Erase last 7 days backups from remote server # Erase last 7 days backups from remote server
ssh $REMOTE_USER@$REMOTE_HOST "find $REMOTE_DIR -type f -name 'docker_backup_*' -mtime +7 -exec rm {} \;" if ! ssh $REMOTE_USER@$REMOTE_HOST "find $REMOTE_DIR -type f -name 'docker_backup_*' -mtime +7 -exec rm {} \;"; then
send_notify "[Docker Backup][$HOSTNAME] Warning" "⚠️ <span style='color:orange'>Failed to clean old backups on remote server:</span> $REMOTE_HOST:$REMOTE_DIR"
fi
# Exit # Success notification
send_notify "[Docker Backup][$HOSTNAME] Success" "✅ <span style='color:green'>Backup completed successfully for:</span> $SOURCE_DIR to $REMOTE_HOST:$REMOTE_DIR"
echo "Backup completed successfully" echo "Backup completed successfully"
exit 0 exit 0