Kapitel 13/Tutorial.md aktualisiert
This commit is contained in:
@@ -604,58 +604,77 @@ In diesem Schritt erstellen wir den eigentlichen Workflow in **n8n**. Er sorgt d
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# /usr/local/bin/clipper_cleanup.sh
|
# /srv/clipper/bin/cleanup
|
||||||
# Automatisiertes Aufräumen und Archivieren für Clipper-Workflow
|
# Clipper-Cleanup: Archiviert VODs, lädt sie via SFTP hoch und räumt alte Daten auf
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
# ---- .env laden ----
|
# -------------------------------
|
||||||
|
# .env einbinden
|
||||||
|
# -------------------------------
|
||||||
ENV_FILE="/etc/clipper.env"
|
ENV_FILE="/etc/clipper.env"
|
||||||
[[ -f "$ENV_FILE" ]] || { echo "❌ .env fehlt: $ENV_FILE" >&2; exit 1; }
|
[[ -f "$ENV_FILE" ]] || { echo "❌ .env fehlt: $ENV_FILE" >&2; exit 1; }
|
||||||
# shellcheck disable=SC1090
|
# shellcheck disable=SC1090
|
||||||
source "$ENV_FILE"
|
source "$ENV_FILE"
|
||||||
|
|
||||||
# ---- Logging einrichten ----
|
# TMP → konsistente Benennung
|
||||||
|
CLIPPER_TEMP="${CLIPPER_TMP:?CLIPPER_TMP fehlt in .env}"
|
||||||
|
|
||||||
|
# -------------------------------
|
||||||
|
# Logging vorbereiten
|
||||||
|
# -------------------------------
|
||||||
TODAY="$(date +%F)"
|
TODAY="$(date +%F)"
|
||||||
LOGFILE="${CLIPPER_LOG}/clipper_cleanup_${TODAY}.log"
|
LOGFILE="${CLIPPER_LOG}/clipper_cleanup_${TODAY}.log"
|
||||||
exec > >(tee -a "$LOGFILE") 2>&1
|
exec > >(tee -a "$LOGFILE") 2>&1
|
||||||
|
|
||||||
echo "===== Starte Cleanup: $TODAY ====="
|
echo "===== 🧹 Starte Cleanup: $TODAY ====="
|
||||||
|
|
||||||
# ---- OUT-Verzeichnis verarbeiten ----
|
# -------------------------------
|
||||||
|
# Alle VOD-Ordner in OUT verarbeiten
|
||||||
|
# -------------------------------
|
||||||
for VOD_DIR in "${CLIPPER_OUT}"/*/; do
|
for VOD_DIR in "${CLIPPER_OUT}"/*/; do
|
||||||
[[ -d "$VOD_DIR" ]] || continue
|
[[ -d "$VOD_DIR" ]] || continue
|
||||||
|
|
||||||
VOD_ID=$(basename "$VOD_DIR")
|
VOD_ID="$(basename "$VOD_DIR")"
|
||||||
ARCHIVE_PATH="${CLIPPER_OUT}/${VOD_ID}.tar.gz"
|
ARCHIVE_PATH="${CLIPPER_OUT}/${VOD_ID}.tar.gz"
|
||||||
|
|
||||||
echo "📦 Erstelle Archiv für VOD: $VOD_ID"
|
echo "📦 Erstelle Archiv für VOD: $VOD_ID"
|
||||||
tar -czf "$ARCHIVE_PATH" -C "$CLIPPER_OUT" "$VOD_ID"
|
tar -czf "$ARCHIVE_PATH" -C "$CLIPPER_OUT" "$VOD_ID"
|
||||||
|
|
||||||
echo "🔼 SFTP-Upload: ${ARCHIVE_PATH} → ${SFTP_DROP_BASE}/${VOD_ID}.tar.gz"
|
echo "🔼 Lade Archiv nach NC (SFTP): ${ARCHIVE_PATH} → ${SFTP_DROP_BASE}/${VOD_ID}.tar.gz"
|
||||||
sftp -i "$SFTP_KEY" -P "$SFTP_PORT" -oStrictHostKeyChecking=no "$SFTP_USER@$SFTP_HOST" <<EOF
|
sftp -i "$SFTP_KEY" -P "$SFTP_PORT" -oStrictHostKeyChecking=no "$SFTP_USER@$SFTP_HOST" <<EOF
|
||||||
put "$ARCHIVE_PATH" "${SFTP_DROP_BASE}/${VOD_ID}.tar.gz"
|
put "$ARCHIVE_PATH" "${SFTP_DROP_BASE}/${VOD_ID}.tar.gz"
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
echo "🧹 Lösche OUT-Ordner: $VOD_DIR"
|
echo "🧹 Entferne OUT-Ordner: $VOD_DIR"
|
||||||
rm -rf "$VOD_DIR"
|
rm -rf "$VOD_DIR"
|
||||||
|
|
||||||
TEMP_DIR="${CLIPPER_TMP}/${VOD_ID}"
|
TEMP_DIR="${CLIPPER_TEMP}/${VOD_ID}"
|
||||||
if [[ -d "$TEMP_DIR" ]]; then
|
if [[ -d "$TEMP_DIR" ]]; then
|
||||||
echo "🧹 Lösche TEMP-Ordner: $TEMP_DIR"
|
echo "🧹 Entferne TEMP-Ordner: $TEMP_DIR"
|
||||||
rm -rf "$TEMP_DIR"
|
rm -rf "$TEMP_DIR"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "✅ Fertig: $VOD_ID"
|
echo "✅ Fertig mit VOD: $VOD_ID"
|
||||||
done
|
done
|
||||||
|
|
||||||
# ---- Alte Logs löschen ----
|
# -------------------------------
|
||||||
echo "🧹 Lösche LOG-Dateien älter als 30 Tage: $CLIPPER_LOG"
|
# Logs aufräumen (älter als 30 Tage)
|
||||||
|
# -------------------------------
|
||||||
|
echo "🧹 Entferne alte Logs in: $CLIPPER_LOG"
|
||||||
find "$CLIPPER_LOG" -type f -name "clipper_cleanup_*.log" -mtime +30 -print -delete
|
find "$CLIPPER_LOG" -type f -name "clipper_cleanup_*.log" -mtime +30 -print -delete
|
||||||
|
|
||||||
echo "🎉 Cleanup abgeschlossen: $TODAY"
|
echo "🎉 Cleanup abgeschlossen: $TODAY"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Wie zuvor auch, muss auch dieses Skript wieder die richtigen Berechtigungen zugewiesen bekommen.
|
||||||
|
Der Befehl sotte zwar allen berrits bekannt sein, dennoch wiederholen wir ihn:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
chmod 755 <clipper-ordner>/bin/cleanup
|
||||||
|
chown clipper:clipper <clipper-ordner>/bin/cleanup
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
8.3 **Finalize-Skript auf dem Nextcloud-Host**
|
8.3 **Finalize-Skript auf dem Nextcloud-Host**
|
||||||
Nachdem der Clipper die VOD-Datei in die Drop-Zone incoming/<VOD_ID> hochgeladen hat, müssen wir diese Dateien an den endgültigen Platz in Nextcloud verschieben. Nur so erscheinen sie auch im Web-Interface. Genau dafür legen wir jetzt ein Skript an, das automatisch aufgerufen werden kann.
|
Nachdem der Clipper die VOD-Datei in die Drop-Zone incoming/<VOD_ID> hochgeladen hat, müssen wir diese Dateien an den endgültigen Platz in Nextcloud verschieben. Nur so erscheinen sie auch im Web-Interface. Genau dafür legen wir jetzt ein Skript an, das automatisch aufgerufen werden kann.
|
||||||
|
|||||||
Reference in New Issue
Block a user