diff --git a/backup.sh b/backup.sh index bdad517..fb1d71d 100644 --- a/backup.sh +++ b/backup.sh @@ -4,12 +4,24 @@ # Variables SERVER_FILE="https://git.ivanch.me/ivanch/server-scripts/raw/branch/main/backup.sh" SERVER_OK=1 +HOSTNAME=$(cat /etc/hostname) # Check if the server file exists curl -s --head $SERVER_FILE | head -n 1 | grep -E "HTTP/[12] [23].." > /dev/null 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 + send_notify "[Docker Backup][$HOSTNAME] Error" "❌ Server file not found: $SERVER_FILE" SERVER_OK=0 fi @@ -48,19 +60,34 @@ REMOTE_DIR="/export/Backup/Docker/$(cat /etc/hostname)" # Create a compressed backup file zip -r $BACKUP_FILE $SOURCE_DIR +# Create a compressed backup file +if ! zip -r $BACKUP_FILE $SOURCE_DIR; then + send_notify "Backup Error" "❌ Failed to create backup archive for: $SOURCE_DIR" + exit 1 +fi + # 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" "❌ Failed to create remote directory: $REMOTE_DIR on $REMOTE_HOST" + exit 1 +fi # 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" "❌ Failed to transfer backup file to remote server: $REMOTE_HOST:$REMOTE_DIR" + exit 1 +fi # Remove the backup file rm $BACKUP_FILE # 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" "⚠️ Failed to clean old backups on remote server: $REMOTE_HOST:$REMOTE_DIR" +fi -# Exit +# Success notification +send_notify "[Docker Backup][$HOSTNAME] Success" "✅ Backup completed successfully for: $SOURCE_DIR to $REMOTE_HOST:$REMOTE_DIR" echo "Backup completed successfully" exit 0