sonic6 Posted July 29, 2023 Share Posted July 29, 2023 (edited) Ein Kurzes simples Skript um (stark) komprimierte Backups der LXC Container zu erstellen. Da @ich777 mit der Version 2023.07.30 eine Backup eingeführt hat, ist mein Skript in der ursprünglichen Form "überflüssig" geworden. Nähere Informationen erhält man mit Folgenden Befehlen im Terminal: lxc-autobackup -h lxc-autosnapshot -h Dahingehend habe ich mein Skript angepasst um mehre Container nacheinander zu Sichern: Als Anfänger kann man sich grob an meiner Anleitung für das Pi Image Backup langhangeln. Folgende Dinge sind vorab zu beachten: -Backup Share oder Unterordner (falls gewünscht) im Share erstellen. -Bitte nur die Variablen Anpassen: LCX_CONT_NAMES: Alle zu sichernden Container durch Kommata getrennt eintragen BACKUP_PATCH: Pfad zum Backup Share. Der Ordner muss vorher angelegt werden. Unterordner mit dem Namen des Containers werden automatisch erstellt. COM_LVL: Stärker der Kompression. 0 = niedrig, bis 9 = hoch. !!ACHTUNG!!! 7 bis 9 benötigt bis zu 12GB RAM!! BACKUP_COUNT: Anzahl der zu erhaltenen Backups. Das älteste wird gelöscht. CPU_THREADS: Anzahl der genutzten CPU Threads (nicht Kerne). Wer hier nicht weiß, was er tut, lässt den Wert auf "default" stehen. Bei "default" werden 50% der System-Threads genutzt. USE_SNAPS: 0 = Es wird eine Sicherung des Containerimage OHNE Snapshots gemacht. Der Container ist während des kompletten Sicherungsvorgang offline/gestoppt. 1 = Der Container wird zur Erstellung einen Snapshots gestoppt. Danach wird der Container gestartet und der Snapshot wird gesichert. Das KANN den Vorteil haben, dass der Container schneller wieder gestartet wird/online geht. !!ACHTUNG!! Die Verwendung des Kompressions-Levels von 7 - 9 kann in einer hohen RAM Auslastung von bis zu 12GB resultieren! Bitte mit Vorsicht nutzen! #!/bin/bash ###LXC Container Backup### ###V1.2 ###https://forums.unraid.net/topic/142807-anleitung-lxc-backup-per-user-script/ ########################## #variables LXC_CONT_NAMES="CONTAINER1,CONTAINER2,CONTAINER3" #Name der zu sichernden Container getrennt durch ein Komma ohne Leerzeichen BACKUP_PATH="/mnt/user/YOUR-BACKUP-SHARE" #Pfad zum Backup Share BACKUP_COUNT="5" #Anzahl der zu erhaltenen Backups COMP_LVL="6" #Compressions Level (0 - 9 ACHTUNG! 7-9 benötigt bis zu 12GB RAM) CPU_THREADS="default" #Anzahl der zu nutzenden CPU Threads (0 = ALLE / default = haelfte) USE_SNAP="1" #Snapshot verwenden (1 = aktiviert, 0 = deaktiviert) #splitt Containernames IFS=',' read -ra CONTAINERS <<< "$LXC_CONT_NAMES" #backup for container in "${CONTAINERS[@]}"; do if [ "$USE_SNAP" -eq 1 ]; then if [ "$CPU_THREADS" = "default" ]; then lxc-autobackup -s -n="$container" -p="$BACKUP_PATH" -b="$BACKUP_COUNT" -c="$COMP_LVL" else lxc-autobackup -s -n="$container" -p="$BACKUP_PATH" -b="$BACKUP_COUNT" -c="$COMP_LVL" -t="$CPU_THREADS" fi else if [ "$CPU_THREADS" = "default" ]; then lxc-autobackup -n="$container" -p="$BACKUP_PATH" -b="$BACKUP_COUNT" -c="$COMP_LVL" else lxc-autobackup -n="$container" -p="$BACKUP_PATH" -b="$BACKUP_COUNT" -c="$COMP_LVL" -t="$CPU_THREADS" fi fi done Ursprüngliches Skript: Spoiler Der Inhalt des Backups ist der Container selbst, die erstellten Snapshots und die Config. Das Skript lastet den Server recht stark aus, dafür ist die Komprimierung sehr platzsparend. Hinzu kommt eine recht hohe RAM Auslastung von circa 12GB. Als Anfänger kann man sich grob an meiner Anleitung für das Pi Image Backup langhangeln. #!/bin/bash ###LXC Container Backup### ###V1.1 ###https://forums.unraid.net/topic/142807-anleitung-lxc-backup-per-user-script/ ########################## #variables LXC_CONT_NAME="CONTAINER NAME" #LXC Container Name aus dem UI BACKUP_PATH="/mnt/user/YOUR-BACKUP-SHARE" #Pfad zum Backup Share BACKUP_COUNT="5" #Anzahl der zu erhaltenen Backups CPU_THREADS="all" #Anzahl der zu nutzenden CPU Threads (Nummer oder "all") #dont change DATE="$(date +%Y%m%d)" REAL_BACKUP_PATH="$(realpath -s ${BACKUP_PATH})" #check LXC setup LXC_PATH=$(cat /boot/config/plugins/lxc/lxc.conf | grep "lxc.lxcpath=" | cut -d '=' -f2-) #stop + backup lxc-stop -n ${LXC_CONT_NAME} umount ${LXC_PATH}/${LXC_CONT_NAME}/rootfs 2>/dev/null cd ${LXC_PATH}/${LXC_CONT_NAME} mkdir -p ${REAL_BACKUP_PATH}/${LXC_CONT_NAME} if [ ${CPU_THREADS} != "all" ]; then tar -cf - . | xz -9 --threads=${CPU_THREADS} > ${REAL_BACKUP_PATH}/${LXC_CONT_NAME}/${LXC_CONT_NAME}-${DATE}.tar.xz else tar -cf - . | xz -9 --threads=$(nproc --all) > ${REAL_BACKUP_PATH}/${LXC_CONT_NAME}/${LXC_CONT_NAME}-${DATE}.tar.xz fi #delete old backups pushd ${REAL_BACKUP_PATH}/${LXC_CONT_NAME}; ls -tr ${REAL_BACKUP_PATH}/${LXC_CONT_NAME}/${LXC_CONT_NAME}* | head -n -${BACKUP_COUNT} | xargs rm; popd #restart lxc-start -n ${LXC_CONT_NAME} Backup wiederherstellen: Öffne das Terminal und nutze folgenden Befehl um die autoback Funktion aufzulisten. lxc-autobackup -h Hier werden die Möglichkeiten und Beispiele für die Wiederherstellung angezeigt. Danke an @ich777 für das LXC Plugin, Inspiration, Code-Schnipsel und Hilfe! Bitte berücksichtig, dass ich selbst sehr wenig Erfahrung habe, daher bin ich für Feedback und Ergänzungen sehr dankbar! Edited December 4, 2023 by sonic6 2 Quote Link to comment
sonic6 Posted July 29, 2023 Author Share Posted July 29, 2023 (edited) Changelog/Anpassungen: v1.0 - release v1.1 - fix für einen Fehler beim löschen der Backup, Hinweis auf RAM Nutzung. v1.2 - Anpassungen für Plugin v2023.07.30 Edited July 31, 2023 by sonic6 Quote Link to comment
sonic6 Posted July 31, 2023 Author Share Posted July 31, 2023 Durch das hinzufügen der "lxc-autobackup" Funktion mit der Plugin Version 2023.07.30, habe ich das ganze nochmal bearbeitet. 1 Quote Link to comment
Anym001 Posted December 4, 2023 Share Posted December 4, 2023 @sonic6 Wie würde denn das Wiederherstellen eines solchen backups funktionieren? Quote Link to comment
sonic6 Posted December 4, 2023 Author Share Posted December 4, 2023 50 minutes ago, Anym001 said: @sonic6 Wie würde denn das Wiederherstellen eines solchen backups funktionieren? schreib mal folgenden Command ins Terminal: lxc-autobackup -h @ich777 hat hier an auch an einen simplen restore per lxc-autobackup Funktion gedacht Falls du aber ein manuell machen möchtest, hätte ich noch die Holzhammer-Methode (not-recommended): Spoiler Den Inhalt der .tar einfach in den Ordner des Container innerhalb deine LXC shares entpacken. Dann würde der Container genau dem Ursprung entsprechen. Du kannst aber auch einen neuen Ordner erstellen und dann die config in der .tar anpassen um einen anderen Container aus dem Backup zu erstellen. Schau dir einfach mal den Inhalt deines Backup an und dem in deinem LXC share, dann wirst du recht schnell verstehen, wie simple die Wiederherstellung ist. 2 Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.