WSL/Git Bash Script to Upload all albums in a folder

#!/bin/bash
 
SERVER_USER="ubuntu"
SERVER_HOST="blvaine.ddns.net"
REMOTE_BASE_DIR="/music"
LOCAL_MUSIC_DIR="$1"
 
if [ -z "$LOCAL_MUSIC_DIR" ] || [ ! -d "$LOCAL_MUSIC_DIR" ]; then
    echo "Usage: $0 <music-directory>"
    exit 1
fi
 
for album in "$LOCAL_MUSIC_DIR"/*/; do
    album_name=$(basename "$album")
    echo
    echo "Syncing $album_name..."
    rsync -av --progress "$album" "$SERVER_USER@$SERVER_HOST:$REMOTE_BASE_DIR/$album_name/"
done
 
echo
echo "All albums synced ✅"

Command for this

   ./sync-all-albums.sh Music

Or

bash sync-all-albums.sh MusicLibrary

This library should contain Albums in this format

MusicLibrary/
	 ├── Album1/
	 ├── Album2/
	 └── Album3/

Script to Upload One Album at a time

#!/bin/bash
 
# -------------------------
# Music Album Sync Script
# -------------------------
 
SERVER_USER="ubuntu"
SERVER_HOST="blvaine.ddns.net"
REMOTE_BASE_DIR="/music"
 
# Album comes from argument
LOCAL_ALBUM="$1"
 
# -------------------------
# Validation
# -------------------------
 
if [ -z "$LOCAL_ALBUM" ]; then
    echo "Usage: $0 \"Album Folder Name\""
    exit 1
fi
 
if ! command -v rsync >/dev/null 2>&1; then
    echo "Error: rsync not found. Run this in WSL or Git Bash."
    exit 1
fi
 
echo "rsync found ✅"
 
echo "Testing SSH connection..."
ssh -o BatchMode=yes "$SERVER_USER@$SERVER_HOST" "echo SSH OK" >/dev/null 2>&1
if [ $? -ne 0 ]; then
    echo "SSH connection failed. Make sure your SSH key is loaded."
    exit 1
fi
echo "SSH connection OK ✅"
 
if [ ! -d "$LOCAL_ALBUM" ]; then
    echo "Error: Local album directory not found:"
    echo "  $LOCAL_ALBUM"
    exit 1
fi
 
REMOTE_DIR="$REMOTE_BASE_DIR/$(basename "$LOCAL_ALBUM")"
 
echo
echo "Syncing album:"
echo "$LOCAL_ALBUM$SERVER_USER@$SERVER_HOST:$REMOTE_DIR"
echo
 
rsync -av --progress "$LOCAL_ALBUM/" "$SERVER_USER@$SERVER_HOST:$REMOTE_DIR/"
 
if [ $? -eq 0 ]; then
    echo
    echo "Album sync completed successfully ✅"
else
    echo
    echo "Album sync failed ❌"
    exit 1
fi

Command to run

./sync-album.sh "Daft Punk - Random Access Memories (2013)"

Back References: