Skip to content

Instantly share code, notes, and snippets.

@NotYusta
Last active July 10, 2025 08:34
Show Gist options
  • Save NotYusta/c8ea2e936cb9e609d7dd2549c6048e07 to your computer and use it in GitHub Desktop.
Save NotYusta/c8ea2e936cb9e609d7dd2549c6048e07 to your computer and use it in GitHub Desktop.
MinIO Download
#!/bin/bash
# Usage:
# ./minio_download.sh <ACCESS_KEY> <SECRET_KEY> <BUCKET> <OBJECT_PATH> <DEST_FILE> <MINIO_URL>
# Or set via env vars:
# MINIO_ACCESS_KEY, MINIO_SECRET_KEY, MINIO_BUCKET, MINIO_OBJECT, MINIO_DEST, MINIO_URL
ACCESS_KEY="${1:-$MINIO_ACCESS_KEY}"
SECRET_KEY="${2:-$MINIO_SECRET_KEY}"
BUCKET="${3:-$MINIO_BUCKET}"
OBJECT="${4:-$MINIO_OBJECT}"
DEST="${5:-$MINIO_DEST:-$OBJECT}"
MINIO_URL="${6:-$MINIO_URL}"
ALIAS_NAME="tempminio"
# Optional: Set to "1" to delete the file after download
AUTO_DELETE="${AUTO_DELETE:-0}"
# Validate
if [ -z "$ACCESS_KEY" ] || [ -z "$SECRET_KEY" ] || [ -z "$BUCKET" ] || [ -z "$OBJECT" ] || [ -z "$MINIO_URL" ]; then
echo "Usage:"
echo " $0 <ACCESS_KEY> <SECRET_KEY> <BUCKET> <OBJECT_PATH> <DEST_FILE> <MINIO_URL>"
echo " or set env vars: MINIO_ACCESS_KEY, MINIO_SECRET_KEY, MINIO_BUCKET, MINIO_OBJECT, MINIO_DEST, MINIO_URL"
exit 1
fi
# Install latest mc if needed
if ! command -v mc >/dev/null 2>&1; then
echo "[INFO] Installing latest MinIO Client (mc)..."
curl -sSL https://dl.min.io/client/mc/release/linux-amd64/mc -o /usr/local/bin/mc
chmod +x /usr/local/bin/mc
fi
# Clean existing alias and set new one
mc alias rm "$ALIAS_NAME" >/dev/null 2>&1
if ! mc alias set "$ALIAS_NAME" "$MINIO_URL" "$ACCESS_KEY" "$SECRET_KEY" >/dev/null 2>&1; then
echo "❌ Failed to connect to MinIO at $MINIO_URL with given credentials."
exit 1
fi
# Get signed URL (valid for 1 minute)
SIGNED_URL=$(mc share download --expire=1m "$ALIAS_NAME/$BUCKET/$OBJECT" | awk '/^Share:/ {print $2}')
if [ -z "$SIGNED_URL" ]; then
echo "❌ Failed to generate a download link."
mc alias rm "$ALIAS_NAME" >/dev/null 2>&1
exit 1
fi
echo "[INFO] Downloading: $SIGNED_URL"
curl -# -L "$SIGNED_URL" -o "$DEST"
# Optionally delete the file after download
if [ "$AUTO_DELETE" = "1" ]; then
echo "[INFO] Deleting $DEST after download..."
rm -f "$DEST"
fi
# Clean up
mc alias rm "$ALIAS_NAME" >/dev/null 2>&1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment