删除 nexus3 中指定仓库中的所有组件的脚本
#!/bin/bash# === 配置项 ===
NEXUS_URL="https://nexus.test.com"
REPO_NAME="npm-taotao-proxy"
USERNAME="admin"
PASSWORD="123456"# 日志目录
LOG_DIR="/tmp/nexus-delete"
mkdir -p "$LOG_DIR"
LOG_FILE="$LOG_DIR/delete.log"
exec > >(tee -a "$LOG_FILE") 2>&1log() {echo "[$(date '+%F %T')] $*"
}# === 删除开始 ===
log "开始清理仓库:$REPO_NAME"TOKEN=""while true; dolog "请求组件列表 continuationToken=${TOKEN:-<none>}"RESPONSE=$(curl -s -u "$USERNAME:$PASSWORD" \"$NEXUS_URL/service/rest/v1/components?repository=$REPO_NAME${TOKEN:+&continuationToken=$TOKEN}")echo "$RESPONSE" | jq -r '.items[].id' | while read -r COMPONENT_ID; dolog "尝试删除组件 ID: $COMPONENT_ID"DELETE_RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" -u "$USERNAME:$PASSWORD" \-X DELETE "$NEXUS_URL/service/rest/v1/components/$COMPONENT_ID")if [[ "$DELETE_RESPONSE" == "204" ]]; thenlog "✅ 删除成功: $COMPONENT_ID"elselog "❌ 删除失败: $COMPONENT_ID (HTTP $DELETE_RESPONSE)"fidoneTOKEN=$(echo "$RESPONSE" | jq -r '.continuationToken')if [[ -z "$TOKEN" || "$TOKEN" == "null" ]]; thenlog "所有组件已处理完成。"breakfisleep 1 # 防止请求过快
done
删除完成后,在 nexus Task 模块中创建一个任务 Compact blob store
,然后执行它进行实际磁盘的回收。
(END)