title: cf_tools
slug: cf_tools
lang: de
summary: Kurzbeschreibung hier.
tags: [Crumbforest]
cf_tools
Kurzer Einstiegstext.
Notizen
- Punkt 1
- Punkt 2
FAQ
Q: Worum geht es?
A: âŠ
CF Tools â Kurz-Doku (Stand heute)
Ziel: Kleine, robuste Shell-Hilfen rund um unseren Snapshot-Collector unter /var/cf.
Fokus: Ăbersicht behalten, QualitĂ€t prĂŒfen, aufrĂ€umen â ohne den Live-Betrieb zu stören.
Verzeichnis-Layout
/var/cf
âââ snapshots/ # Bilder, nach Layer/Device
â âââ L1/
â âââ SVGA_ESP01/
â âââ 1758995431.jpg
â âââ ...
âââ index/ # flache Indizes je Device (optional)
âââ L1-SVGA_ESP01.txt
Voraussetzungen
- Debian/Raspberry Pi OS (arm64) oder Àhnlich
- Bash, coreutils, findutils
jq(fĂŒr JSON-Ausgabe):sudo apt-get install -y jq- Optional:
inotify-toolsfĂŒr Live-Follow:sudo apt-get install -y inotify-tools
Installation
# Datei ablegen & ausfĂŒhrbar machen:
sudo tee /usr/local/bin/cf-tools.sh >/dev/null <<'SH'
# (hier steht dein cf-tools.sh Inhalt)
SH
sudo chmod +x /usr/local/bin/cf-tools.sh
# Bequemer Kurzbefehl:
sudo ln -sf /usr/local/bin/cf-tools.sh /usr/local/bin/cf-tools
Standardpfade sind im Script fix:
ROOT=/var/cf,SNAPS=$ROOT/snapshots,INDEX=$ROOT/index.
Schnellstart
# Letzte 60 Minuten â Bilder pro Device zĂ€hlen (Layer L1):
cf-tools recent L1 60
# Top-5 Talker im 60-Minuten-Fenster:
cf-tools top L1 60 5
# Kennzahlen eines GerÀts (Text):
cf-tools device L1 SVGA_ESP04
# Kennzahlen als JSON (ideal fĂŒr Monitoring):
cf-tools device-json L1 SVGA_ESP04 | jq
# Letzte Datei (voller Pfad):
cf-tools last-file L1 SVGA_ESP10
# Doppelte Layer/Device-Pfade finden:
cf-tools dupe-ids
Kommandoreferenz
Basics
-
cf-tools recent [LAYER] [min]
ZĂ€hlt pro Device die Dateien der letzten min Minuten (Default:L1,60). -
cf-tools top [LAYER] [min] [N]
Sortiert nach Anzahl, zeigt Top-N (Default:L1,60,5). -
cf-tools device LAYER DEVICE
Einzeilige Kennzahlen: TOTAL, SIZE, AGE_S, RECENT_60m, LAST. -
cf-tools device-json LAYER DEVICE
Gleiches als JSON (fĂŒr Prom/Logs/API-Verbrauch). -
cf-tools last-file LAYER DEVICE
Gibt den Pfad der jĂŒngsten Datei zurĂŒck. -
cf-tools dupe-ids
Zeigt doppelte PaareLAYER/DEVICE(z. B. Tippfehler oder doppelt geflashte IDs).
Maintenance
-
cf-tools prune-empty
Leere Verzeichnisse entfernen. -
cf-tools rebuild-index
Bautindex/LAYER-DEVICE.txtaus Dateinamen/Mtime neu. -
cf-tools fix-perms
Setzt Besitz sysop:sysop und2775rekursiv auf/var/cf.
Misc
-
cf-tools gallery-url LAYER DEVICE
Linksnack zur Mini-Gallery des Collectors. -
cf-tools follow LAYER DEVICE(optional, braucht inotify-tools)
Live-Anzeige neuer Dateien (nur Dateinamen; sicher fĂŒr Produktion). -
cf-tools purge LAYER DEVICE [older_min]
Vorsichtig: Löscht Dateien Àlter als older_min Minuten (Default: 60).
Beispiele (typische Checks)
1) Wer sendet gerade regelmĂ€Ăig?
cf-tools top L1 10 10
2) Ist ein bestimmtes Device frisch?
cf-tools device L1 SVGA_ESP07
# ... AGE_S=3 RECENT_60m=355 -> OK
3) Monitoring-Hook (JSON)
cf-tools device-json L1 SVGA_ESP05 | jq -r '.age_s'
# â Zahl in Sekunden (z.B. fĂŒr Alarm, falls > 60)
4) Nach Cleanup leere Ordner entfernen
cf-tools prune-empty
5) Rechte nach Restore reparieren
cf-tools fix-perms
Zusammenspiel mit unseren Diensten
- Collector (FastAPI) schreibt Bilder nach
/var/cf/snapshots/<Layer>/<Device>/... - Retention (systemd timer) hÀlt das Volumen sauber (z. B.
>7 Tagelöschen) - Doctor (manuell/cron): Health-Report ĂŒber alle Devices (Durchsatz, Stale, Disk)
cf-toolsergÀnzt das Trio: schnelle Sichtbarkeit, Ad-hoc-Wartung, Skript-Hooks.
Optional: kleine Automatisierungen
Top-Talker minĂŒtlich in ein Log (Beispiel)
sudo tee /usr/local/bin/cf-top-minute.sh >/dev/null <<'BASH'
#!/usr/bin/env bash
set -euo pipefail
stamp=$(date '+%F %T')
echo "[$stamp]" >> /var/log/cf-top.log
cf-tools top L1 10 10 >> /var/log/cf-top.log
echo >> /var/log/cf-top.log
BASH
sudo chmod +x /usr/local/bin/cf-top-minute.sh
/etc/systemd/system/cf-top-minute.timer
[Unit]
Description=CF Top Minute Timer
[Timer]
OnCalendar=*:*:00
Unit=cf-top-minute.service
Persistent=true
[Install]
WantedBy=timers.target
/etc/systemd/system/cf-top-minute.service
[Unit]
Description=CF Top Minute
[Service]
Type=oneshot
ExecStart=/usr/local/bin/cf-top-minute.sh
Aktivieren:
sudo systemctl daemon-reload
sudo systemctl enable --now cf-top-minute.timer
Best Practices
- NTP aktiv: saubere Timestamps â schöne Dateinamen & zuverlĂ€ssige âAgeâ-Checks.
- IDs eindeutig: pro ESP eindeutige
DEVICE_ID; Duplikate mitdupe-idsaufspĂŒren. - Retention frĂŒh festlegen: z. B. 48 h fĂŒr Rohbilder; Alarme & Pose-Snippets lĂ€nger.
- Rechte konsistent: nach manuellen Kopieraktionen
cf-tools fix-perms. - Stille GerÀte im Blick:
AGE_S/RECENT_60mper JSON ins Monitoring aufnehmen.
Troubleshooting (kurz)
-
Ordner existiert nicht:
not found: /var/cf/snapshots/L1/XYZ
â Device/Layer-Name prĂŒfen (GroĂ/Klein), ESP-Konfig, Collector-Logs. -
AGE_S sehr groĂ / RECENT_60m = 0:
â ESP online? WLAN/MQTT/Collector erreichbar?cf-doctor.shlaufen lassen. -
Viele leere Ordner:
âcf-tools prune-empty -
Index veraltet:
âcf-tools rebuild-index
Roadmap (wenn wir Lust haben)
cf-tools summary(kompakter Gesamtstatus aller Devices)cf-tools stale [min](nur AusreiĂer listen)cf-tools to-archive(Stundenclips vorbereiten, Ăbergabe an ffmpeg-Job)- Export als Prometheus-Textformat
Thatâs it.
Schlank, CLI-freundlich, gut skriptbar â und nah dran am, was wir wirklich tĂ€glich brauchen.