#!/bin/bash set -u # Create rclone config on-the-fly in a writable location RCLONE_CONFIG_DIR="/tmp/rclone" mkdir -p "$RCLONE_CONFIG_DIR" export RCLONE_CONFIG="$RCLONE_CONFIG_DIR/rclone.conf" cat > "$RCLONE_CONFIG" << EOF [myminio] type = s3 provider = Minio access_key_id = $MINIO_ACCOUNT_ID secret_access_key = $MINIO_APPLICATION_KEY endpoint = $MINIO_ENDPOINT region = $MINIO_LOCATION acl = private no_check_bucket = true EOF chmod 600 "$RCLONE_CONFIG" # All commands take full remote paths; callers own the path building. case "${1:-}" in copy) echo "copy from $2 to $3" rclone copy --stats-one-line --retries 3 "$2" "$3" ;; list) echo "list $2" >&2 rclone ls "$2" ;; size) # bytes of a single remote object, empty output if it does not exist rclone lsf --format s "$2" 2>/dev/null ;; delete) echo "delete $2" rclone deletefile "$2" ;; *) echo "usage: $0 {copy SRC DST|list PATH|size FILE|delete FILE}" >&2 exit 2 ;; esac