Last active
July 10, 2025 08:34
-
-
Save NotYusta/c8ea2e936cb9e609d7dd2549c6048e07 to your computer and use it in GitHub Desktop.
MinIO Download
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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