Kapitel 13/Tutorial.md aktualisiert
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user