Während meinen aktuellen System-Wartungs-Arbeiten habe ich Docker um-installiert: Von der Upstream-Version bin ich auf die Version gewechselt, die Debian mitliefert (also von Version 28 auf Version 26). Motiviert wurde dieser Wechsel durch einen aktuellen Fehler in der Upstream-Version, der “Docker in LXC” kaputt gemacht hat.
Was ist passiert?
Während dem Downgrade wurden Docker Volumes gelöscht. Ich kann nicht mehr sagen ob ich mit meinem “Prune” zu aggressiv war, oder ob die Volumes das Downgrade nicht überlebt haben, aber am Ende waren sie weg. Und mein Mail-Server (basierend auf Mailcow) war zurückgesetzt auf Werkeinstellungen, inklusive Verlust aller meiner eMails.
Gemerkt habe ich das Problem, weil der Login mit meiner eMail Adresse nicht möglich war.
Meine Lösung
Die Backups am Proxmox Backup Server haben die folgende Form:
- Mein Datastore heißt
main. - Die Backup Gruppe heißt in etwa
host/myserver. - Ein einzelnes Backup heißt schlussendlich
host/myserver/2025-11-12T05:00:02Z.
Ich wollte nur die Docker Volumes wiederherstellen. Ein volles System-Backup wäre zu viel gewesen, da das System aus wesentlich mehr als diesen Volumes besteht. Dieser File-Restore hat wie folgt funktioniert:
- Mounte das Backup, so dass ich Daten herausziehen kann:Ich habe das Backup nicht am betroffenen Server gemountet, da die Internetverbindung zwischen diesen beiden Servern nicht sehr flott ist. Entsprechend ist der Mount auf meinem lokalen System passiert.
1 2 3 4 5 6mkdir /tmp/foo proxmox-backup-client mount \ --repository "root@pam@my-pbs-server.tech-tales.blog:8007:main" \ host/myserver/2025-11-12T05:00:02Z \ root.pxar.didx \ /tmp/foo
Der Befehl macht das Folgende:- Mounte das Backup nach
/tmp/foo. - Technisch konkret wird das File
root.pxar.didxgemountet. Dieser Name scheint im User Interface auf, als diejenige Datei aus der auch ein “File Restore” möglich ist. /tmp/fooist nur ein Ordner auf meinem System.
- Mounte das Backup nach
- Mit einer Shell kann ich jetzt entspannt durch diesen Ordner navigieren wie gewohnt; auch wenn alles ein ganzes Stück langsamer geht.
- Generiere ein Tar-File mit den zurückzoholenden Dateien (achtung: Sichere dieses Tar-File nicht im Filemount!). Beachte: Ich möchte die Berechtigungen und Besitzer-Flags beibehalten, da ist extra zu beachten. Mein Befehl hat am Ende so ausgeschaut:
1tar czvpf /tmp/archive.tar.gz /tmp/foo/var/lib/docker/volumes/mailcow* - Dieses Archive geht jetzt an den Server.
- Achtung: Die Docker Volumes einfach in
/var/lib/docker/volumeszu entpacken ist nicht genug!
Extrahiere das Tarfile stattdessen woanders, und behalte die Berechtigungen bei:tar xvpf archive.tar.gz - Setze die Volumes über Docker (über Compose in meinem Fall) auf. Stoppe die Container allerdings, lasse die nicht laufen.
- Jetzt existieren die Verzeichnisse wie
/var/lib/docker/volumes/mailcowdockerized_mysql-vol-1wieder. Darin habe ich immer das_dataVerzeichnis gelöscht und mit dem aus dem Backup ersetzt.
Was habe ich gelernt?
Proxmox Backup Server sitzt meistens ruhig da und macht sein Ding. Ich beachte den eigentlich sehr wenig, aber ich stelle immer wieder fest dass er zu meinen wesentlichsten Servern gehört: Durch seine Existenz kann ich in aller Ruhe und ohne große Sorgen auf meinen Servern arbeiten, und es ist kein Weltuntergang wenn dabei etwas kaputt geht.
Ein Download aus der Proxmox Backup Server UI hat nicht so funktioniert wie vorgestellt: Nachdem ich den /var/lib/docker/volumes Ordner heruntergeladen hatte, haben eine ganze Menge Dateien gefehlt! Das hat mich einige Nerven gekostet bis ich kapiert hatte dass eh alles da war, und nur der Download kaputt war.
Ich nutze meistens Bind-Mounts statt Docker Volumes. Dieses Ereignis unterstützt meine Entscheidung.