Zwei Luecken, die seit dem Umbau offenstanden.
1. Transfer-Laufwerke waren aus dem Explorer nicht erreichbar
F2 zeigte nur die Dateisysteme des Snapshots. Jetzt stehen die
Transfer-Laufwerke in derselben Liste - aus Sicht des Bedieners ist es
dieselbe Frage ("wo soll ich hinschauen?"), und der Weg ueber
pvesnap-recovery entfaellt.
Das gewaehlte Laufwerk landet im rechten Fenster, links bleibt der
Snapshot. Damit laesst sich direkt aus einem Snapshot auf das
Austauschmedium kopieren, das anschliessend in die wiederhergestellte
Maschine wandert - ohne Zwischenlager auf dem Host.
Ausgehaengt wird beim Verlassen, und zwar nur, was wir selbst eingehaengt
haben: ein Laufwerk, das schon vorher am Host hing, gehoert jemand
anderem. Das finally faengt auch Absturz und Strg-C ab - bliebe es
eingehaengt, gaelte es spaeter als belegt.
2. cleanup fand geschuetzte Snapshots ohne Klon nicht
Loescht jemand eine Wiederherstellung in der Proxmox-Oberflaeche, raeumt
Proxmox den Klon durchaus mit ab - aber nicht den Schutz seines
Quell-Snapshots (rbd snap protect, den setzt es beim Klonen selbst).
Zurueck bleibt ein geschuetzter Snapshot ohne Klon: die Vorhaltezeit
scheitert an ihm jede Nacht mit "snapshot is protected", und
find_orphans() findet prinzipiell nichts, weil es den Datentraeger, nach
dem es sucht, wirklich nicht mehr gibt. Dasselbe entsteht nach einem von
Hand ausgefuehrten rbd flatten.
find_stale_protections() sucht deshalb direkt nach der Ursache: jeder
geschuetzte Snapshot, an dem kein Klon haengt. Ein solcher Schutz hat
keinen Zweck - er existiert einzig dafuer, dass ein Klon seine Grundlage
behaelt. Geloest wird nur der Schutz, geloescht wird nichts. Vor jedem
Loesen wird ein zweites Mal nachgesehen, ob inzwischen doch ein Klon
daran haengt.
cleanup laeuft damit in zwei Durchgaengen und liegt neu auch in der
Oberflaeche auf Taste c - man sucht sonst lange nach einem Befehl, den
man nur im Notfall braucht.
Getestet gegen die Kulisse der Handbuch-Werkstatt: die rbd-Attrappe
kennt jetzt snap ls und children und enthaelt beide Zustaende
nebeneinander - ein geschuetzter Snapshot mit Klon (muss in Ruhe
gelassen werden) und einer ohne (muss gefunden werden).
Handbuch und README nachgezogen, zwei Bildschirmfotos dazu.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
206 lines
6.8 KiB
Markdown
206 lines
6.8 KiB
Markdown
# Der Explorer
|
|
|
|
```bash
|
|
pvesnap-explorer # Gast und Snapshot auswählen
|
|
pvesnap-explorer 101 # Snapshot von VM 101 auswählen
|
|
pvesnap-explorer 101 <snapname> # direkt öffnen
|
|
```
|
|
|
|
Braucht `root` — Snapshots einbinden und mounten geht nicht anders.
|
|
|
|
---
|
|
|
|
## Drei Ebenen
|
|
|
|
<div class="ablauf" markdown>
|
|
|
|
**Gastauswahl** → **Snapshot-Auswahl** → **Dateien**
|
|
|
|
</div>
|
|
|
|
Mit ++q++ geht es jeweils eine Ebene zurück. Beim Verlassen des Dateibrowsers
|
|
wird der Snapshot wieder ausgehängt, sodass man gleich den nächsten öffnen kann.
|
|
|
|
### 1. Welcher Gast?
|
|
|
|

|
|
|
|
Alle VMs und Container des Clusters, mit Zustand und Node. Ein gestoppter Gast
|
|
ist kein Hindernis — sein Snapshot lässt sich genauso lesen.
|
|
|
|
### 2. Welcher Snapshot?
|
|
|
|

|
|
|
|
Neueste zuerst, mit Datum und Beschreibung. Die Beschreibung ist der Grund,
|
|
warum es sich lohnt, sie in der Konfiguration ordentlich zu setzen — hier sucht
|
|
man später danach.
|
|
|
|
Halbfertige Einträge aus abgebrochenen Läufen werden ausgeblendet; wenn welche
|
|
da sind, sagt eine Meldung, wie man sie loswird.
|
|
|
|
### 3. Die Dateien
|
|
|
|

|
|
|
|
Links der Snapshot, rechts der lokale Rechner. Oben steht, welcher Gast und
|
|
welcher Snapshot offen ist, unten der volle Pfad des markierten Eintrags.
|
|
|
|
---
|
|
|
|
## Tastenbelegung
|
|
|
|
| Taste | |
|
|
|---|---|
|
|
| ++tab++ | Fenster wechseln |
|
|
| ++up++ ++down++ | bewegen |
|
|
| ++enter++ | Verzeichnis öffnen oder Datei ansehen |
|
|
| ++backspace++ ++left++ | ein Verzeichnis hoch |
|
|
| ++home++ ++end++ | Anfang / Ende |
|
|
| ++page-up++ ++page-down++ | seitenweise |
|
|
| ++space++ | markieren |
|
|
| ++asterisk++ | Markierung umkehren |
|
|
| ++a++ / ++u++ | alle markieren / keine |
|
|
| ++f5++ oder ++c++ | Markiertes ins andere Fenster kopieren |
|
|
| ++f3++ oder ++v++ | Datei ansehen (Text oder Hex) |
|
|
| ++f7++ oder ++n++ | neues Verzeichnis (nur im lokalen Fenster) |
|
|
| ++f6++ oder ++g++ | Verzeichnis direkt eingeben |
|
|
| ++f2++ oder ++m++ | [Laufwerk wählen](#laufwerk-wahlen) |
|
|
| ++r++ | neu einlesen |
|
|
| ++f10++ oder ++q++ | eine Ebene zurück |
|
|
| ++question++ oder ++f1++ | Hilfe |
|
|
|
|
Die Hilfe ist jederzeit erreichbar:
|
|
|
|

|
|
|
|
---
|
|
|
|
## Kopieren
|
|
|
|
Markieren mit ++space++ — markierte Einträge stehen in Gelb:
|
|
|
|

|
|
|
|
Dann ++f5++:
|
|
|
|

|
|
|
|
Kopiert wird **immer vom aktiven ins andere Fenster**. In den Snapshot hinein
|
|
geht nichts — er ist schreibgeschützt eingebunden.
|
|
|
|
Während des Kopierens läuft ein Fortschrittsbalken; ++esc++ bricht ab. Bereits
|
|
kopierte Dateien bleiben dabei liegen, die gerade laufende wird entfernt, damit
|
|
kein halbes Stück zurückbleibt.
|
|
|
|
Existiert eine Datei am Ziel schon, wird gefragt:
|
|
|
|
| Antwort | |
|
|
|---|---|
|
|
| `ja` | diese überschreiben |
|
|
| `nein` | diese überspringen |
|
|
| `alle` | alles Weitere überschreiben, nicht mehr fragen |
|
|
| `keine` | alles Weitere überspringen |
|
|
|
|
**Was übersprungen wird:** Gerätedateien, Sockets und FIFOs. Symbolische
|
|
Verweise bleiben Verweise — sie werden nicht aufgelöst.
|
|
|
|
!!! tip "Aus mehreren Snapshots ins selbe Ziel"
|
|
|
|
Das rechte Fenster behält sein Verzeichnis, auch wenn man zurückgeht und
|
|
den nächsten Snapshot öffnet. Damit lassen sich mehrere Stände bequem
|
|
nebeneinander sammeln — etwa dieselbe Konfigurationsdatei von gestern,
|
|
vorgestern und vom Monatsersten.
|
|
|
|
---
|
|
|
|
## Dateien ansehen
|
|
|
|
++f3++ zeigt eine Datei, ohne sie zu kopieren:
|
|
|
|

|
|
|
|
Text wird als Text dargestellt, alles andere als Hexdump. Das reicht meist
|
|
schon, um die Frage „ist das die richtige Fassung?" zu beantworten — ohne die
|
|
Datei erst auf den Host zu holen.
|
|
|
|
---
|
|
|
|
## Laufwerk wählen
|
|
|
|
++f2++ öffnet eine Liste mit zwei Arten von Einträgen:
|
|
|
|

|
|
|
|
### Dateisysteme des Snapshots
|
|
|
|
Eine VM hat oft mehr als eine Partition: `/` und `/boot`, dazu vielleicht ein
|
|
eigenes Datenlaufwerk. Hat der Snapshot mehrere brauchbare Dateisysteme, fragt
|
|
der Explorer schon beim Öffnen, welches er zeigen soll — hier lässt sich
|
|
später ohne Schließen wechseln.
|
|
|
|
!!! note "Was nicht auftaucht"
|
|
|
|
Swap-Partitionen, EFI-Partitionen ohne lesbaren Inhalt und alles, was der
|
|
Kernel nicht kennt. LVM innerhalb der VM wird erkannt und aktiviert;
|
|
verschlüsselte Volumes bleiben verschlüsselt.
|
|
|
|
### Austauschlaufwerke
|
|
|
|
Darunter stehen die
|
|
[Austauschlaufwerke](../wiederherstellen/transfer.md). Wählt man eines aus,
|
|
wird es am Host eingehängt und **im rechten Fenster** geöffnet.
|
|
|
|
Damit lässt sich aus einem Snapshot direkt auf das Austauschmedium kopieren,
|
|
das anschließend in eine [wiederhergestellte
|
|
Maschine](../wiederherstellen/index.md) wandert — ohne Umweg über
|
|
`pvesnap-recovery` und ohne Zwischenlager auf dem Host.
|
|
|
|
<div class="ablauf" markdown>
|
|
|
|
**Der typische Fall:** Vor dem Notfall die Werkzeuge zusammenstellen. Snapshot
|
|
öffnen, ++f2++, Austauschlaufwerk wählen, die gebrauchten Binärdateien und
|
|
Konfigurationen hinüberkopieren. Beim nächsten `pvesnap-recovery` steht alles
|
|
bereit.
|
|
|
|
</div>
|
|
|
|
| in der Liste | |
|
|
|---|---|
|
|
| ohne Zusatz | frei oder bereits am Host eingehängt — kann geöffnet werden |
|
|
| `[in Benutzung von 9101]` | steckt in einer Maschine. Öffnen wird abgelehnt; siehe [Host oder Gast, nie beides](../wiederherstellen/transfer.md#host-oder-gast-nie-beides) |
|
|
|
|
Beim Verlassen des Explorers wird ein so eingehängtes Laufwerk **automatisch
|
|
wieder ausgehängt** — sonst gälte es später als belegt und ließe sich nicht in
|
|
eine Maschine hängen. Ein Laufwerk, das schon vorher am Host hing, bleibt
|
|
unangetastet.
|
|
|
|
!!! note "Ohne Snapshot"
|
|
|
|
Wird der Explorer aus der [Laufwerksverwaltung](../wiederherstellen/transfer.md)
|
|
heraus geöffnet, gibt es kein Snapshot-Fenster. Dann landet das gewählte
|
|
Laufwerk im **gerade aktiven** Fenster.
|
|
|
|
---
|
|
|
|
## Aufrufparameter
|
|
|
|
| Parameter | Vorgabe | Bedeutung |
|
|
|---|---|---|
|
|
| `vmid` | — | Gast direkt vorwählen |
|
|
| `snapshot` | — | Snapshot direkt vorwählen |
|
|
| `-l`, `--local <pfad>` | aktuelles Verzeichnis | Startverzeichnis im rechten Fenster |
|
|
| `-p`, `--path <pfad>` | — | beliebiges Verzeichnis öffnen, ohne Proxmox zu fragen |
|
|
| `--cleanup` | — | hängengebliebene Einbindungen lösen und beenden |
|
|
| `-v`, `--verbose` | — | ausführliches Protokoll |
|
|
| `-V`, `--version` | — | Version anzeigen |
|
|
|
|
```bash
|
|
pvesnap-explorer --local /srv/restore # rechtes Fenster startet dort
|
|
pvesnap-explorer --path /mnt/x # ohne Proxmox, zum Ausprobieren
|
|
pvesnap-explorer --cleanup # nach einem Absturz aufräumen
|
|
```
|
|
|
|
`--path` ist auch der Weg, den Commander auf etwas ganz anderes loszulassen —
|
|
ein gemountetes Backup etwa. Dann braucht es weder Proxmox noch root.
|