Kapitel 13/Tutorial.md aktualisiert

This commit is contained in:
2025-09-23 18:22:33 +00:00
parent 0fa25b4abd
commit 56e7ffa133

View File

@@ -605,7 +605,8 @@ In diesem Schritt erstellen wir den eigentlichen Workflow in **n8n**. Er sorgt d
```bash
#!/usr/bin/env bash
# /srv/clipper/bin/cleanup
# Cleanup für eine einzelne VOD_ID: Archivieren, Upload via SFTP, gezieltes Löschen
# Clipper-Cleanup für eine einzelne VOD_ID:
# Erstellt Archiv, lädt es via SFTP hoch, löscht OUT und TEMP immer, LOGS nur wenn älter als 30 Tage
set -euo pipefail
@@ -629,43 +630,59 @@ In diesem Schritt erstellen wir den eigentlichen Workflow in **n8n**. Er sorgt d
# Logging vorbereiten
# -------------------------------
TODAY="$(date +%F)"
LOGFILE="${CLIPPER_LOG}/clipper_cleanup_${VOD_ID}_${TODAY}.log"
LOG_DIR="${CLIPPER_LOG}/${VOD_ID}"
mkdir -p "$LOG_DIR"
LOGFILE="${LOG_DIR}/clipper_cleanup_${TODAY}.log"
exec > >(tee -a "$LOGFILE") 2>&1
echo "===== 🧹 Starte Cleanup für VOD: $VOD_ID $TODAY ====="
# -------------------------------
# Archiv erstellen
# Pfade definieren
# -------------------------------
OUT_DIR="${CLIPPER_OUT}/${VOD_ID}"
ARCHIVE_PATH="${CLIPPER_OUT}/${VOD_ID}.tar.gz"
TEMP_DIR="${CLIPPER_TEMP}/${VOD_ID}"
LOG_VOD_DIR="${CLIPPER_LOG}/${VOD_ID}"
ARCHIVE_TEMP_PATH="${CLIPPER_OUT}/${VOD_ID}.tar.gz"
ARCHIVE_FINAL_PATH="${OUT_DIR}/${VOD_ID}.tar.gz"
# -------------------------------
# Archiv erstellen (außerhalb, dann verschieben)
# -------------------------------
if [[ -d "$OUT_DIR" ]]; then
echo "📦 Erstelle Archiv aus: $OUT_DIR"
tar -czf "$ARCHIVE_PATH" -C "$CLIPPER_OUT" "$VOD_ID"
echo "📦 Erstelle temporäres Archiv (ohne Selbstreferenz): $ARCHIVE_TEMP_PATH"
tar -czf "$ARCHIVE_TEMP_PATH" -C "$CLIPPER_OUT" "$VOD_ID"
echo "📂 Verschiebe Archiv in VOD-Ordner: $ARCHIVE_FINAL_PATH"
mv "$ARCHIVE_TEMP_PATH" "$ARCHIVE_FINAL_PATH"
else
echo "⚠️ OUT-Verzeichnis fehlt: $OUT_DIR"
exit 2
fi
# -------------------------------
# SFTP-Upload
# Archiv hochladen per SFTP
# -------------------------------
echo "🔼 Lade Archiv nach: ${SFTP_DROP_BASE}/${VOD_ID}.tar.gz"
echo "🔼 Lade Archiv hoch: ${SFTP_DROP_BASE}/${VOD_ID}.tar.gz"
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_FINAL_PATH" "${SFTP_DROP_BASE}/${VOD_ID}.tar.gz"
EOF
# -------------------------------
# OUT löschen
# Archiv lokal löschen nach erfolgreichem Upload
# -------------------------------
echo "🗑️ Lösche Archiv im VOD-Ordner: $ARCHIVE_FINAL_PATH"
rm -f "$ARCHIVE_FINAL_PATH"
# -------------------------------
# OUT-Verzeichnis löschen
# -------------------------------
echo "🧹 Entferne OUT: $OUT_DIR"
rm -rf "$OUT_DIR"
# -------------------------------
# TEMP löschen (sofern vorhanden)
# TEMP-Verzeichnis löschen (falls vorhanden)
# -------------------------------
TEMP_DIR="${CLIPPER_TEMP}/${VOD_ID}"
if [[ -d "$TEMP_DIR" ]]; then
echo "🧹 Entferne TEMP: $TEMP_DIR"
rm -rf "$TEMP_DIR"
@@ -676,20 +693,19 @@ In diesem Schritt erstellen wir den eigentlichen Workflow in **n8n**. Er sorgt d
# -------------------------------
# LOGS nur löschen, wenn älter als 30 Tage
# -------------------------------
LOG_DIR="${CLIPPER_LOG}/${VOD_ID}"
if [[ -d "$LOG_DIR" ]]; then
LAST_CHANGE=$(find "$LOG_DIR" -type f -printf "%T@\\n" | sort -n | tail -1)
if [[ -d "$LOG_VOD_DIR" ]]; then
LAST_CHANGE=$(find "$LOG_VOD_DIR" -type f -printf "%T@\\n" | sort -n | tail -1 || echo 0)
NOW=$(date +%s)
AGE_DAYS=$(( (NOW - ${LAST_CHANGE%.*}) / 86400 ))
if (( AGE_DAYS > 30 )); then
echo "🧹 Entferne LOGS (älter als 30 Tage): $LOG_DIR"
rm -rf "$LOG_DIR"
echo "🧹 Entferne LOGS (älter als 30 Tage): $LOG_VOD_DIR"
rm -rf "$LOG_VOD_DIR"
else
echo " LOG-Verzeichnis ist nur $AGE_DAYS Tage alt wird behalten."
fi
else
echo " Kein LOG-Verzeichnis vorhanden."
echo " Kein LOG-Verzeichnis vorhanden für VOD: $VOD_ID"
fi
echo "✅ Cleanup abgeschlossen für VOD: $VOD_ID"