nexus數(shù)據(jù)遷移

源服務(wù)器:
系統(tǒng): win
nexus版本: nexus-3.70.1-02-java8-win64

目標(biāo)服務(wù)器:
系統(tǒng): linux
nexus版本: 最新版
jdk: 17

這里有坑,
1, nexus-3.70.x最高支持jdk11 ,但是我們的環(huán)境是jdk17, 所以運(yùn)行不了,
2, 另外nexus-3.70.x之前是OrientDB, 之后是h2

剛開始各種辦法都試過(guò)了, 什么覆蓋,什么cli工具, 反正沒(méi)一個(gè)成功的, 后來(lái)采用同bat腳本直接遍歷上傳, 將bat放在私庫(kù)目錄, 然后運(yùn)行就可以

@echo off
setlocal enabledelayedexpansion
chcp 65001 >nul
cls

:: ====================== 你只需要改這里 ======================
set "SOURCE=http://源ip:8081"
set "S_USER=admin"
set "S_PASS=xxx"
set "S_REPO=maven-releases"

set "TARGET=http://目標(biāo)ip:8081"
set "T_USER=admin"
set "T_PASS=xxx"
set "T_REPO=maven-releases"
:: ==========================================================

echo.
echo  ============ Nexus 遷移工具(穩(wěn)定無(wú)死循環(huán)) ============
echo.

set "token="
set "page=1"

:loop
echo 正在讀取第 !page! 頁(yè)...

:: 獲取一頁(yè)數(shù)據(jù)
curl -s -u "%S_USER%:%S_PASS%" "%SOURCE%/service/rest/v1/components?repository=%S_REPO%&continuationToken=!token!" -o c.json

:: 解析出所有  group|artifact|version
powershell -Command "$json=Get-Content c.json -Raw | ConvertFrom-Json; foreach($i in $json.items){Write-Host $i.group'|'$i.name'|'$i.version}" > list.txt

:: 開始上傳
for /f "tokens=1-3 delims=|" %%g in (list.txt) do (
    set g=%%g
    set a=%%h
    set v=%%i
    echo 遷移:!g!:!a!:!v!

    :: 拼接路徑:com/xxx/xxx/1.0
    set "path=!g:.=/!/!a!/!v!"

    :: 上傳 pom
    curl -s -u "%S_USER%:%S_PASS%" "%SOURCE%/repository/%S_REPO%/!path!/!a!-!v!.pom" | curl -s -u "%T_USER%:%T_PASS%" -X PUT -T - "%TARGET%/repository/%T_REPO%/!path!/!a!-!v!.pom"
    :: 上傳 jar
    curl -s -u "%S_USER%:%S_PASS%" "%SOURCE%/repository/%S_REPO%/!path!/!a!-!v!.jar" | curl -s -u "%T_USER%:%T_PASS%" -X PUT -T - "%TARGET%/repository/%T_REPO%/!path!/!a!-!v!.jar"
)

:: 獲取下一頁(yè) token(沒(méi)有就退出,絕對(duì)不會(huì)死循環(huán))
for /f "delims=" %%t in ('powershell -Command "$json=Get-Content c.json -Raw|ConvertFrom-Json; if($json.continuationToken){$json.continuationToken}else{''}"') do (
    set "token=%%t"
)

if "!token!"=="" goto end
set /a page+=1
goto loop

:end
echo.
echo ? 遷移完成
del c.json list.txt
pause
exit /b
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容