summaryrefslogtreecommitdiff
path: root/zfs_bootstrap.sh
diff options
context:
space:
mode:
authordoc <doc@filenotfound.org>2025-06-30 20:11:52 +0000
committerdoc <doc@filenotfound.org>2025-06-30 20:11:52 +0000
commit41e897f4945aaf8fbcdf0b12ac2f08c5e6ae0458 (patch)
treedb7c3520fd91abc3cf56b1a52095d23f3a80d059 /zfs_bootstrap.sh
commit of legacy codeHEADmaster
Diffstat (limited to 'zfs_bootstrap.sh')
-rwxr-xr-xzfs_bootstrap.sh50
1 files changed, 50 insertions, 0 deletions
diff --git a/zfs_bootstrap.sh b/zfs_bootstrap.sh
new file mode 100755
index 0000000..c1ed297
--- /dev/null
+++ b/zfs_bootstrap.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+set -euo pipefail
+
+# CONFIGURATION
+ORIG_MINIO_PATH="/assets"
+NEW_ZFS_PATH="/zfs/disk1"
+MINIO_BUCKETS=(
+ "assets_azuracast"
+ "assets_archives"
+ "assets_genesisassets"
+ "assets_genesislibrary"
+ "assets_mastodon"
+ "assets_teamtalkdata"
+)
+MINIO_USER="minio-user"
+MINIO_SERVICE="minio"
+
+echo "=== Step 1: Preparing new ZFS path ==="
+mkdir -p "$NEW_ZFS_PATH"
+
+for BUCKET in "${MINIO_BUCKETS[@]}"; do
+ CLEAN_NAME="${BUCKET/assets_/}" # Remove 'assets_' prefix
+ SRC="$ORIG_MINIO_PATH/$BUCKET/"
+ DEST="$NEW_ZFS_PATH/$CLEAN_NAME/"
+
+ echo "=== Step 2: Rsyncing $BUCKET → $CLEAN_NAME ==="
+ rsync -a --info=progress2 "$SRC" "$DEST"
+
+ echo "=== Step 3: Fixing ownership for: $CLEAN_NAME ==="
+ chown -R "$MINIO_USER:$MINIO_USER" "$DEST"
+done
+
+echo "=== Step 4: Update MinIO service (manual step) ==="
+echo "Set ExecStart in minio.service to:"
+echo " /usr/local/bin/minio server $NEW_ZFS_PATH --console-address \":9001\""
+
+echo "=== Step 5: Reload and restart MinIO ==="
+echo "Run:"
+echo " systemctl daemon-reload"
+echo " systemctl restart $MINIO_SERVICE"
+
+echo "=== Step 6: Validate with mc ==="
+echo "Run:"
+echo " mc alias set local http://localhost:9000 genesisadmin MutationXv3!"
+echo " mc ls local/"
+
+echo ""
+echo "✅ All buckets (including teamtalkdata) are now synced to the ZFS backend."
+echo "To roll back, revert minio.service ExecStart and restart MinIO."