Benutzer-Werkzeuge

Webseiten-Werkzeuge


server:gitea:datenimport:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
server:gitea:datenimport:start [2026/05/27 17:06] 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.1779901614.txt.gz · Zuletzt geändert: von admin