Ich habe wohl schon gefragt,

TErxleben

Renowned Member
Oct 20, 2008
552
85
93
finde es aber nicht wieder.
Wie wäre es, parallel zum dump-Ordner, einen latest-Ordner zu pflegen. In diesem werden dann Links zu den entsprechenden Dateien im dump-Ordner gepflegt. Welche dort landen, könnte man sogar wie ein normales Dump in der WebGUI definieren.
Man könnte latest höchst effektiv z.B. per rsync (Parameter -L) mit Offsite-Speichern synchronisieren. Das ganze sogar im Pullbetrieb.
Hat das evtl. schon mal jemand gescriptet?

Nochmal long story in short: bei jedem Dump werden die akribisch benannten files im dump-Ordner als Link im latest Ordner durchnummeriert abgebildet.
 
Last edited:
Hi TErxleben,

ich glaube, ein extra-Ordner wäre für diese Aufgabe etwas Overkill. Irgendwo muss ja eroiert werden, wer denn der letzte Dump ist -- und diesen irgendwen könnte man dann auch direkt für rsync o.ä verwenden.

Hier ein bisschen Python, das in etwa das tut (das ist jetzt schnell zusammengebastelt, also bitte nur als Inspiration sehen und nicht drauf verlassen, dass es in allen Situationen korrekt funktioniert):

Python:
import os

# set directory var and init dict
dumpdir='/var/lib/vz/dump/'
dumpdict={}

# collect all dumpdates for a vmid
for dfile in os.listdir(path=dumpdir):
    vmid = str(dfile.split('-')[2])
    if not vmid in dumpdict:
        dumpdict[vmid]=[]
    dumpdict[vmid].append('-'.join(dfile.split('-')[3:]).
                          split('.')[0])

# throw out everything but the latest dumpdate
for vmid, dumpdate in dumpdict.items():
    dumpdict[vmid]=sorted(set(dumpdate), reverse=True)[0]

# print files matching vmid and latest dumpdate in dumpdir
for vmid, dumpdate in dumpdict.items():
    for dfile in os.listdir(path=dumpdir):
        if all(matching_pair in dfile
               for matching_pair in
               [vmid, dumpdate]):
            print(dumpdir+dfile)

Ein solches Skript sollte dann (hier für die lokale Storage '/var/lib/vz/dump') die neuesten Dumpfiles ausgeben, die man dann mit z.B. rsync weiterleiten könnte:
Bash:
# angenommen das skript von oben wurde als 'latest dumps' gespeichert
python3 latest_dumps.py

Wenn es um Speichereffizienz/Rollback-Integrität geht, ist jedoch sicher PBS [0] die bessere Lösung, da du hier inkrementelles Backup und Deduplikation dazubekommst (ohne dass die älteren, aufbewahrten Backups Unsummen an Speicher verbrauchen).

[0] https://pbs.proxmox.com/docs/
 
  • Like
Reactions: Johannes S