Beim Einbinden stuerzte der Explorer mit IndexError ab. Ursache: prepare()
meldete nur dann einen Fehler, wenn gar kein Geraet gefunden wurde - nicht
aber, wenn zwar Geraete da waren, sich davon aber keins einhaengen liess.
Der Aufrufer griff dann blind auf mountpoints[0] zu.
* prepare() meldet jetzt einen Fehler, sobald kein Dateisystem eingehaengt
werden konnte, und nennt dabei die gefundenen Geraete samt Dateisystem-
Typ - sonst raet man beim Suchen nur.
* Der Explorer prueft die Liste zusaetzlich selbst ab.
Der wahrscheinlichste Grund fuer "gefunden, aber nicht mountbar" ist LVM
im Gast: dahinter liegt zunaechst nur ein LVM2_member. Das wird jetzt
unterstuetzt - inklusive der heiklen Stelle: heisst die Volume-Group im
Gast genauso wie eine auf dem Host (typisch 'pve'), waere nicht mehr
eindeutig, welche gemeint ist. Erkannt wird das an gleichem Namen bei
unterschiedlicher UUID; dann wird bewusst nichts aktiviert und der Grund
angezeigt. Beim Aufraeumen wird die Gruppe vor dem Aushaengen des Geraets
wieder deaktiviert.
Ausserdem "udevadm settle" nach dem Einbinden - die Partitionsgeraete
tauchen sonst manchmal erst nach dem Scan auf.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Snapshots anzulegen half bisher nur halb - an die Daten darin kam man nur
ueber einen Rollback. Dafuer jetzt zwei Werkzeuge auf gemeinsamer Basis.
snapfs.py bindet einen Snapshot schreibgeschuetzt ein und liefert einen
gewoehnlichen Pfad; die Oberflaechen wissen dadurch nichts ueber Storages:
rbd (Ceph) rbd map pool/image@snap, bei nicht unterstuetzten
Image-Features faellt es auf rbd-nbd zurueck
zfspool Container ueber .zfs/snapshot, VMs ueber einen Klon
lvmthin/lvm die Snapshot-LV snap_<volume>_<snapname> aktivieren
dir/nfs/cifs qemu-nbd --load-snapshot (nur qcow2)
Gemountet wird mit ro,noload bzw. ro,norecovery,nouuid - Snapshots
laufender Gaeste haben fast immer ein unsauberes Journal. Alles Angelegte
steht in /run/pvesnap/explorer.json und laesst sich nach einem Absturz mit
"--cleanup" wieder abraeumen.
pvesnap-explorer: zwei Fenster wie im Midnight Commander, links der
Snapshot, rechts der lokale Rechner. Markieren, F5, Fortschrittsbalken,
ESC bricht ab, vorhandene Dateien werden abgefragt. In den Snapshot hinein
kann nicht kopiert werden. Geraetedateien und Sockets werden
uebersprungen, symbolische Verweise bleiben Verweise.
pvesnap-web: derselbe Inhalt im Browser, auch vom anderen Rechner.
Einzelne Dateien direkt, Verzeichnisse und Mehrfachauswahl als ZIP, das im
Strom erzeugt wird - ohne Zwischendatei auf der Platte. Zugang nur mit dem
beim Start ausgegebenen Schluessel; Pfade ausserhalb des Snapshots werden
abgewiesen; es wird ausschliesslich gelesen.
Nebenbei: die curses-Bausteine sind aus tui.py nach curses_util.py
gewandert, damit Editor und Explorer sie teilen.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>