backup appdata mit borg


igorekDE
Go to solution Solved by mgutt,

Recommended Posts

hi Gays, habe  früher backup mit ein script gemacht weil er jeder container einzig stopt und startet also das ist der:

#!/bin/bash

TOKEN=""

ID=""

URL_MSG="https://api.telegram.org/bot$TOKEN/sendMessage"

 docker_containers=$(docker ps --all --format "{{.Names}}")

cd /mnt/user/appdata && appdata_folders=(*)

for i in "${appdata_folders[@]}"

do

coincidence=$(echo "${docker_containers[@]}" | grep "$i")

if [[ -n $coincidence ]]

then echo "stop cont $i"

docker stop -t 60

$coincidence echo "kopiere datei $i"

rsync -avP --delete --stats $i -r /mnt/user/Backups/Unraid/appdata

echo "starte container $i"

docker start $coincidence

else echo "gibts kein container $i" curl -s -X POST $URL_MSG -d chat_id=$ID -d text="bei tatei "$i" gibts kein container⚠️"

fi echo "-------" done

 

also jetzt möchte ich statt rsync es mit borgbackup zu machen. wenn ich statt

"rsync -avP --delete --stats $i -r /mnt/user/Backups/Unraid/appdata " dann

"borg create --stats --progress --verbose --show-rc /mnt/user/backup/borg::appdata-`date +%Y%m%d%H-%M-%S` /mnt/user/appdata/$a " schreibe dann funktioniert es aber bisschen falsh. er packt jeder container in eizige archiv

DIE FRAGE: Wie kann ich es machen dass es ist nur ein archiv ist mit alle container?

Edited by igorekDE
Link to comment
  • Solution

Ersetze rsync gegen:

 

cp -a --reflink=always /mnt/user/appdata/$i /mnt/user/appdata/backup/$i

 

Dadurch wird von jedem Container ein lokaler Snapshot erstellt. Das belegt keinen extra Speicherplatz und dauert nur wenige Sekunden pro Container (Ausfallzeit des Containers reduziert sich entsprechend).

 

Nach der Schleife also quasi in die letzte Zeile packst du dann dein Borg create, nutzt da den Quellpfad /mnt/user/appdata/backup und löschst danach die Quelle (wichtig, damit der nächste cp 1:1 ist und keine bereits gelöschten Dateien enthält):

 

rm -r /mnt/user/appdata/backup

 

Achtung: rm kann den gesamten Server löschen, wenn der Pfad entsprechend falsch gesetzt wird. Also immer genau prüfen bevor man rm ausführt.

 

Auch Achtung: der Pfad /appdata/backup sollte natürlich von keinem Container in Verwendung sein. Falls doch musst du logischerweise einen anderen Namen wählen.

 

 

Link to comment
On 10/18/2022 at 8:24 AM, mgutt said:

Ersetze rsync gegen:

 

cp -a --reflink=always /mnt/user/appdata/$i /mnt/user/appdata/backup/$i

 

Dadurch wird von jedem Container ein lokaler Snapshot erstellt. Das belegt keinen extra Speicherplatz und dauert nur wenige Sekunden pro Container (Ausfallzeit des Containers reduziert sich entsprechend).

 

Nach der Schleife also quasi in die letzte Zeile packst du dann dein Borg create, nutzt da den Quellpfad /mnt/user/appdata/backup und löschst danach die Quelle (wichtig, damit der nächste cp 1:1 ist und keine bereits gelöschten Dateien enthält):

 

rm -r /mnt/user/appdata/backup

 

Achtung: rm kann den gesamten Server löschen, wenn der Pfad entsprechend falsch gesetzt wird. Also immer genau prüfen bevor man rm ausführt.

 

Auch Achtung: der Pfad /appdata/backup sollte natürlich von keinem Container in Verwendung sein. Falls doch musst du logischerweise einen anderen Namen wählen.

 

 

Unbenannt.png

cp reflink klappt irgendwie nicht

Disk1 Xfs

cache btrfs

kann es deswegen werden?

Edited by igorekDE
Link to comment
24 minutes ago, igorekDE said:

cp reflink klappt irgendwie nicht

Reflink funktioniert nur innerhalb der selben Partition. Du machst lokal die Reflink Kopie (die keinen Speicherplatz benötigt) und erst am Ende sicherst du diese Kopie auf den externen Datenträger (und löschst dann wieder die Reflink Kopie).

 

15 hours ago, Anym001 said:

warum verwendest du nicht einfach das "CA Appdata Backup / Restore v2" Plugin?

Das taugt ja echt gar nichts, muss ich mal sagen. Die Tage erst bei einem Kunden gehabt. Wie stellt man zb das Backup von einem Cotnainer wieder her. Und zwar wenn man keine Ahnung von der Konsole hat? 

Link to comment
On 10/18/2022 at 8:24 AM, mgutt said:

Ersetze rsync gegen:

 

cp -a --reflink=always /mnt/user/appdata/$i /mnt/user/appdata/backup/$i

 

Dadurch wird von jedem Container ein lokaler Snapshot erstellt. Das belegt keinen extra Speicherplatz und dauert nur wenige Sekunden pro Container (Ausfallzeit des Containers reduziert sich entsprechend).

 

Nach der Schleife also quasi in die letzte Zeile packst du dann dein Borg create, nutzt da den Quellpfad /mnt/user/appdata/backup und löschst danach die Quelle (wichtig, damit der nächste cp 1:1 ist und keine bereits gelöschten Dateien enthält):

 

rm -r /mnt/user/appdata/backup

 

Achtung: rm kann den gesamten Server löschen, wenn der Pfad entsprechend falsch gesetzt wird. Also immer genau prüfen bevor man rm ausführt.

 

Auch Achtung: der Pfad /appdata/backup sollte natürlich von keinem Container in Verwendung sein. Falls doch musst du logischerweise einen anderen Namen wählen.

 

 

noch eine frage

wenn ich cp reflink gemacht habe, starten die contaners wieder, und dann beginnt borg. wenn es in diese Zeit Container ändert sich  z.b nextcloud neue einstellung oder postgres in database neue bild gespeichert dann aber in /mnt/user/appdata/backup/$i ändert sich nix? ist es gleich wie  bei rsync?

Link to comment
1 hour ago, igorekDE said:

wenn es in diese Zeit Container ändert sich  z.b nextcloud neue einstellung oder postgres in database neue bild gespeichert dann aber in /mnt/user/appdata/backup/$i ändert sich nix?

Korrekt. Die Dateien bleiben in dem Zustand wie als der Container gestoppt wurde. Wenn der Container dann startet und Dateien ändert, schreibt er quasi neue Dateien.

Link to comment

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.