Benutzer-Werkzeuge

Webseiten-Werkzeuge


server:gitea:datenimport:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
server:gitea:datenimport:start [2026/05/27 17:06] – angelegt adminserver:gitea:datenimport:start [2026/05/27 17:25] (aktuell) admin
Zeile 1: Zeile 1:
-Datenimport+====== Datenimport ====== 
 + 
 +Wenn sehr viele bestehende Daten in eine neue Gitea-Installation importiert werden sollen, dann geht das ganz bequem per Skript. Die Daten (.git) liegen im Importverzeichnis, z. B.: <code bash>/mnt/dataSSD/gitea/data/import/eugen</code> 
 +Ausserdem wird ein gültiger //Import-Tocken// benötigt. Ein neuer Token wird erstellt unter:\\ 
 +//**Settings**// | //**Applications**// | //**Generate New Token**//\\ 
 +Name: <code bash>import</code> 
 +Scopes (anhaken): 
 +<code bash>repo</code> 
 +<code bash>admin:repo</code> 
 +<code bash>write:repo</code> 
 +Den Token, genau so wie er oben angezeigt wird, in das Skript kopieren.\\ 
 +**ACHTUNG: Der Token wird nur einmal angezeigt!!!** 
 + 
 +Das ausführbare Skript: 
 +<code bash>#!/bin/bash 
 + 
 +# === Konfiguration === 
 +SRC_BASE="/mnt/dataSSD/gitea/import/eugen" 
 +TMP_BASE="/tmp/gitea-mirror" 
 +HOST="gitea.hoeglinger.name" 
 +OWNER="eugen" 
 +TOKEN="083acf8f9f568ccdd623973ce5c3a6d3a9801d6c" 
 +API_URL="https://$HOST/api/v1/user/repos" 
 + 
 +mkdir -p "$TMP_BASE" 
 + 
 +echo "=== STARTE LIVE-IMPORT ALLER REPOS (HTTPS) ===" 
 +echo 
 + 
 +# Git-Safe-Directory für alle Import-Repos setzen 
 +for repo in "$SRC_BASE"/*.git; do 
 +    [ -d "$repo" ] || continue 
 +    git config --global --add safe.directory "$repo" 
 +done 
 + 
 +for repo in "$SRC_BASE"/*.git; do 
 +    [ -d "$repo" ] || continue 
 + 
 +    name=$(basename "$repo" .git) 
 +    echo "==================================================" 
 +    echo "===> Importiere Repository: $name" 
 +    echo "==================================================" 
 + 
 +    # 1) Repo in Gitea anlegen (falls noch nicht vorhanden) 
 +    echo "--> Erzeuge Repo in Gitea (falls nötig)..." 
 +    curl -s -X POST "$API_URL"
 +      -H "Content-Type: application/json"
 +      -H "Authorization: token $TOKEN"
 +      -d "{ 
 +            \"name\": \"$name\", 
 +            \"private\": false 
 +          }" \ 
 +      | jq -r '.message // "ok"' 2>/dev/null 
 + 
 +    # 2) Mirror-Clone lokal erstellen 
 +    workdir="$TMP_BASE/$name.mirror" 
 +    echo "--> Erzeuge Mirror-Clone in $workdir..." 
 +    rm -rf "$workdir" 
 +    if ! git clone --mirror "$repo" "$workdir"; then 
 +        echo "!! Fehler beim Clone von $name" 
 +        continue 
 +    fi 
 + 
 +    cd "$workdir" || { 
 +        echo "!! Konnte nicht nach $workdir wechseln" 
 +        continue 
 +    } 
 + 
 +    # 3) Remote zu Gitea setzen (HTTPS + Token) 
 +    echo "--> Setze Remote auf Gitea (HTTPS)..." 
 +    git remote remove gitea 2>/dev/null || true 
 +    git remote add gitea "https://$OWNER:$TOKEN@$HOST/$OWNER/$name.git" 
 + 
 +    # 4) Mirror-Push 
 +    echo "--> Push --mirror nach Gitea..." 
 +    if git push --mirror gitea; then 
 +        echo "===> OK: $name erfolgreich gespiegelt." 
 +    else 
 +        echo "!! Fehler beim Push von $name" 
 +    fi 
 + 
 +    echo 
 +done 
 + 
 +echo "=== LIVE-IMPORT ABGESCHLOSSEN ===" 
 +</code>
server/gitea/datenimport/start.1779901581.txt.gz · Zuletzt geändert: von admin