Backup Nextcloud auf Ubuntu mit Hyper-V

Hallo zusammen,

ich habe mir jetzt Nextcloud 14 auf einem Ubuntu Server 18 in einer Windows 10 Hyper-V Maschine eingerichtet. ZusĂ€tzlich zur Nextcloud habe ich alle Daten ĂŒber Samba freigegeben. Ich habe im weiteren ein QNAP NAS (das leider Nextcloud 14 nicht unterstĂŒtzt-> 1GB RAM) welches nun jeden Tag ein Backup machen sollte.

Wie gehe ich da am besten vor ?
-Einfach die komplette Virtuelle Maschine sichern ? Muss ich da dann jeden Tag die kompletten Daten kopieren und habe somit keine Verisonsverwaltung oder ?
-Mit Rsync oder dergleichen jeweils das Datenverzeichniss und die Datenbank sichern ? Hier ist eine Versionsverwaltung möglich, jedoch mĂŒsste ich Nextcloud bei einem Festplattenausfall wieder umstĂ€ndlich einrichten ?
-Einfach die Daten per Samba/Webdav auf das NAS kopieren ? Dies scheint mir die einfachste Lösung
 aber was ist mit den Kalendern und Kontakten ?

Bin hier leider kein Profi, hab die Einrichtung mit Ach und Krach hinbekommen


Vielen Dank,

Andi

Hi,

genau fĂŒr solche Anforderungen gibt’s ein Skript: Nextcloud-Backup-Restore.

Hier sind nur ein paar wenige Anpassungen an die konkrete Umgebung erforderlich. Anschließend erhĂ€lt man Komplett-Backups (Nextcloud-Dateien, Datenbank und Datenverzeichnis) in gepackter Form (tar.gz).
Diese Archive kannst du dann beipeilsweise auch auf einem NAS speichern.

Bei Bedarf gibt es dann auch noch ein Restore-Skript, mit dem du ein Backup mit nur einem Befehl zurĂŒckspielen kannst.

Automatisieren könntest du das Ganze z.B. mit einem Cronjob, der tÀglich nachts lÀuft.

Hallo,

ok das sieht ja schonmal gut aus. Aber: Wenn ich z.B. 500 GB in der Cloud habe, brauch ich nochmal 500 um ein Backup zu speichern ? Wenn ich jetzt das erste Backup gemacht habe, dann z.b. nochmal 10gb hinzufĂŒge, wie groß ist dann das nĂ€chste backup ? Nur die geĂ€nderten 10 GB oder ?

Ich habe jetzt mal ein Script erstellt und ausgefĂŒhrt. Diese Anleitung hier war sehr hilfreich (stammt vermutlich auch von dir, vielen Dank dafĂŒr.

Hier mal die Zeilen, wie ich sie geÀndert habe:

backupMainDir="/mnt/NextcloudBackups/"

backupdir="${backupMainDir}/${currentDate}/"

nextcloudFileDir="/var/www/nextcloud"

nextcloudDataDir="/mnt/ncdata"

webserverServiceName=“Apache”

nextcloudDatabase=“nextcloud_db”

dbUser=“ncadmin”

dbPassword=“MeinPasswort”

webserverUser=“www-data”

maxNrOfBackups=0

Leider hab ich keine Code einfĂŒgen Funktion gefunden. Ich habe die Hyper V Standartinstallation mit diesem Script hier ausgefĂŒhrt.

Ich bekomme folgende Fehler:

Failed to stop Apache.service: Unit Apache.service not loaded.

./NextcloudBackup.sh: Zeile 104: mysqldump: Befehl nicht gefunden

Failed to start Apache.service: Unit Apache.service not found.

Vermutlich habe ich einfach nicht den richtigen Dienst beschrieben. Kannst du mir sagen was hier Richtig ist anhander der Beschreibung ? Oder sagen wie ich rausfinde was ich eintragen muss ?

Der Service fĂŒr den Webserver sollte “apache2” lauten: service apache2 start/stop
Das Installations-Skript aus deinem Link installiert auch SQLite und kein Mariadb/MySQL. Hiermit habe ich leider keine Erfahrungen, vielleicht ist hier dieser Link hilfreich.

Falls du es hinbekommen solltest, dann melde dich einfach nochmal, evtl. kann ich die Befehle fĂŒr Apache/SQLite noch in das Wiki des GitHub-Repos eintragen.

Hallo DecaTec,

vielen Dank fĂŒr deine Hilfe. Dieses Installationsscript verwendet postgreSQL als Datenbank.
Folgender Befehl erstellt ein Backup:

sudo -u ncadmin pg_dump --user ncadmin -b -F c nextcloud_db --file /mnt/NextcloudBackups/testbackup2.sql

Allerdings glaube ich nicht das das im Script mit sudo -u funktioniert ?

pg_dump --host=localhost --user=ncadmin -b -F c nextcloud_db --file  /mnt/NextcloudBackups/testbackup2.sql 

Damit sollte es grundsĂ€tzlich auch funktionieren. Nur kommt dann ein Fenster zur Eingabe des Passworts. Das muss dann vermutlich das Passwort des Datenbankbenutzers sein. Ich glaube da ist aber gar keines vergeben oder ? Zumindest passt das was ich fĂŒr diesen Unix Benutzer verwendet habe nicht


Hat jemand hierzu eine Idee ?

Wenn du das Skript mit Root-Rechten ausfĂŒhrst (sudo -s), kann dann der DB-Dump nicht gezogen werden?

Kann ich das Script einfach mit root rechten ausfĂŒhren ? Ich habe gedacht das macht man nicht, das ist böse

Muss ich dann den Befehl genau so in das Script einfĂŒgen wie ich Ihn als 1. Beschrieben habe ?

Klar, fĂŒr das Skript werden Root-Rechte benötigt, da fĂŒr einige Sachen einfach Root-Rechte benötigt werden. Das Skript prĂŒft aber auch vor der AusfĂŒhrung des ersten Befehls, ob Root-Rechte vorhanden sind.

Der Befehl sollte (mit Root-Rechten) dann einfach so aussehen:
pg_dump --host=localhost --user=ncadmin -b -F c nextcloud_db --file /mnt/NextcloudBackups/testbackup2.sql

Und du hast Recht: Unbekannte Skripte solte man in der Tat nicht einfach mit Root-Rechten ausfĂŒhren - da kann ja prinzipiell alles ausgefĂŒhrt werden. Aber das Skript ist ja als Open Source verfĂŒgbar, daher siehst du genau, was da ablĂ€uft und dass da nichts Böses passiert.

edit: hatte das falsche Datenbankpasswort. Der richtige Befehl lautet:

PGPASSWORD="${dbPassword}" pg_dump "${nextcloudDatabase}" -h localhost -U "${dbUser}" -f "${backupdir}${fileNameBackupDb}"

HĂ€tte man auch hier asufĂŒhrlich fĂŒr jeden Datenbanktyp gefunden: https://docs.nextcloud.com/server/12/admin_manual/maintenance/backup.html

So lÀufts jetzt und macht ein ganz anstÀndiges Backup.

Eine Problem:
Ich habe die Backups die das Script erstellt jetzt mal mit rsync auf ein anderes NAS gespeichert per SSH. Ich möchte spÀter jeden Tag ein Backup haben. Die tÀglichen Backups sollten je 30 Tage aufgehoben werden. Dann monatlich je eines. So hatte ich es vorher mit meiner Qnap NAS mit Snapshots gemacht.

Ich werde spĂ€ter ca 500-1000GB Daten in der Nextcloud haben. Soweit ich das sehe werden bei jedem Backup alle Dateien gesichert. Am nĂ€chsten Tag wieder. Außerdem wird das Backup erstmal lokal gespeichert. Da habe ich aber eigtl. gar keinen Platz

  1. Was kann ich machen das ich mehrere Backups habe aber nicht immer den gesamten Datenstand speichern muss ?

2.Kann ich das Backup auch direkt per SSH woanders erstellen lassen ?

Vielen Dank fĂŒr deine UnterstĂŒtzung !

Das Skript geht erst einmal vom einfachsten Fall aus, damit es fĂŒr möglichst viele AnwendungsfĂ€lle passt.

Du mĂŒsstest dir das Skript eben auf deine BedĂŒrfnisse anpassen:

  • Dass nicht nur X Backup-SĂ€tze behalten werden, sondern zeitgesteuert.
  • Bei so vielen Daten wĂŒrde ich das Datenverzeichnis nicht immer zippen, da hier immer alle Daten gesichert werden. Den Befehl wĂŒrde ich vermutlich durch einen Aufruf von rsync ersetzen, der dann auch nur neue und geĂ€nderte Dateien sichert.
  • Bedenke auch, dass das Skript nur das loakle Nextcloud-Datenverzeichnis sichert. Evtl. in Nextcloud eingebundene externe Speicher werden dabei nicht mitgesichert.
  • Das Ziel-Verzeichnis der Backups kannst du selbst festlegen. Ich wĂŒrde mir dazu mal sshfs ansehen, damit kannst du entfernte Verzeichnisse per SSH ins lokale Dateisystem mounten.

HierfĂŒr habe ich was gefunden: rsnapshot
Damit könnte ich die Dateien sicher und nur noch die Datenbank wie im Script.

Da stellt sich mir noch eine Frage: Was spricht eigentlich das ich direkt in Hyper-V einfach jeden Tag einen Snapshot mache, und den dann Auslagere ? Dann habe ich alle Fliegen mit einer Klappe geschlagen ?

Das geht natĂŒrlich auch. Auf einem Windows Server sogar im laufenden Betrieb der VM (Stichwort: Server-Sicherung).
Wo liegen denn deine 500-1000GB an Daten? Auch auf der VM? Dann werden diese auch jeden Tag gesichert, was wiederum seht viel Speicherplatz kosten wĂŒrde.

Ich lagere die Snapshots aus dieser Konstellation direkt auf die ans System angeschlossene Sicherungsplatte aus oder auf eine Datenpartition, die regelmĂ€ĂŸig gesichert wird. Zudem konsolidiere ich die Snapshots mind. einmal im Monat. Über die Sicherungen habe ich dann ja noch eine Versionierung.