Hey Leute,
ich bin noch nicht lange in der Linux Welt unterwegs und habe von meinem Chef eine Aufgabe bekommen, um unsere NAS Systeme zu backupen auf einem Rechner, wo wir Debian installiert haben und über den wir auch alles steuern möchten.
Ich soll nun ein Skript verfassen, was das Ganze automatisiert.
Dafür muss ich später das Skript in die crontab -e Datei einfügen.
Ich soll das Ganze so gestalten, dass ich zuerst die NAS-Dateien auf den Rechner kopiere, dass würde ich über cifs machen. Hat auch einzeln funktioniert. (Hab das bei fstab eingefügt)
Danach soll ich das Ganze aber noch einmal auf dem Rechner extra speichern und den Vorgang dann noch in eine Log-Datei schreiben.
Ich habe versucht das Problem mit Rsync zu lösen, aber irgendwas läuft schief.
Ich würde auch gerne vor dem rsync -Befehl abchecken, ob der Transfer der Daten vom NAS auf den Rechner funktioniert hat. Vermutlich über eine if-Abfrage ?
Hatte jemand vielleicht schon einmal eine ähnliche Aufgabe oder kann mir generell helfen?
Vielen Dank schon einmal
Cifs und Rsync
Re: Cifs und Rsync
Kann man alles machen.fefor90 hat geschrieben:09.08.2022 15:40:34Ich soll das Ganze so gestalten, dass ich zuerst die NAS-Dateien auf den Rechner kopiere, dass würde ich über cifs machen. Hat auch einzeln funktioniert. (Hab das bei fstab eingefügt)
Danach soll ich das Ganze aber noch einmal auf dem Rechner extra speichern und den Vorgang dann noch in eine Log-Datei schreiben.
Ich verstehe allerdings den Punkt "noch einmal auf dem Rechner extra speichern" nicht. Heißt das, nach dem Datentransfer über das LAN soll zusätzlich eine lokale Kopie erzeugt werden? Eine zweite Kopie zu erzeugen, kann Sinn ergeben, aber zwei (hoffentlich) identische Kopien auf dem selben Rechner zu haben erscheint mir wenig sinnvoll. Auch würde ich keine zweite Kopie von einer ersten Kopie ziehen, sondern immer vom Original.
Dann solltest du diesem "irgendwas" auf den Grund gehen!fefor90 hat geschrieben:09.08.2022 15:40:34Ich habe versucht das Problem mit Rsync zu lösen, aber irgendwas läuft schief.
Vor dem Transfer ist schlecht. Du könntest aber NACH dem Transfer den Exit-Status von rsync prüfen, und so eine schnelle Prüfung machen, ob rsync erfolgreich war. Dabei sei aber angemerkt, dass ein Exit-Status der einen Fehler vermuten lässt nicht zwangsläufig bedeuten muss, dass die Datensicherung fehlerhaft war. In diesen Fällen solltest du das Log prüfen.fefor90 hat geschrieben:09.08.2022 15:40:34Ich würde auch gerne vor dem rsync -Befehl abchecken, ob der Transfer der Daten vom NAS auf den Rechner funktioniert hat. Vermutlich über eine if-Abfrage ?
Falsche Erfolgsmeldungen sollte es zum Glück hoffentlich nicht geben, jedenfalls nicht auf Programmebene.
Re: Cifs und Rsync
Vielen Dank für die Antwort.
Das mit dem doppelt speichern habe ich falsch verstanden.
Wenn ich das jetzt alles richtig verstehe, ist es so, dass ich als erstes Cifs benutze, um die Daten freizugeben und um dann anschließend die Daten per Rsync ohne Passworteingabe übertragen(backupen) kann, weil ich die Infos im fstab gespeichert habe. Macht das so SInn?
Muss ich, wenn ich den Vorgang in eine Log Datei schreiben möchte, einfach hinter dem rsync Befehl > /var/log/rsync.log hinzufügen? Die Datei habe ich erstellt. Ist es notwendig der Log-Datei irgendwelche Rechte zu geben oder reicht es, wenn ich das gesamte Skript ausführbar mache?
Das mit dem doppelt speichern habe ich falsch verstanden.
Wenn ich das jetzt alles richtig verstehe, ist es so, dass ich als erstes Cifs benutze, um die Daten freizugeben und um dann anschließend die Daten per Rsync ohne Passworteingabe übertragen(backupen) kann, weil ich die Infos im fstab gespeichert habe. Macht das so SInn?
Muss ich, wenn ich den Vorgang in eine Log Datei schreiben möchte, einfach hinter dem rsync Befehl > /var/log/rsync.log hinzufügen? Die Datei habe ich erstellt. Ist es notwendig der Log-Datei irgendwelche Rechte zu geben oder reicht es, wenn ich das gesamte Skript ausführbar mache?
Re: Cifs und Rsync
Meiner Meinung nach ist es keine gute Idee, rsync über CIFS zu fahren.Via CIFS ist man auf dem Server mit einem bestimmten Benutzerkonto angemeldet, hat also nur Berechtigungen, auf Dateien zuzugreifen, die man mit diesem Benutzerkonto lesen/schreiben darf. Backups sollten aber den kompletten Datenbestand erfassen, auch den anderer Benutzer.fefor90 hat geschrieben:11.08.2022 06:53:46Wenn ich das jetzt alles richtig verstehe, ist es so, dass ich als erstes Cifs benutze, um die Daten freizugeben und um dann anschließend die Daten per Rsync ohne Passworteingabe übertragen(backupen) kann, weil ich die Infos im fstab gespeichert habe. Macht das so SInn?
rsync bringt übrigens sein eigenes Netzwerkprotokoll mit, eine gemountete Quelle oder ein gemountetes Ziel, egal ob CIFS oder NFS, ist also überhaupt nicht notwendig. Ich weiß natürlich nicht, was das für ein NAS ist, um das es hier geht, aber QNAP und Synology sind Linuxsysteme, die unter anderem auch SSH und rsync an Bord haben, so daß man Backups über einen SSH-Tunnel fahren kann.
Ja, so mache ich das auch.Muss ich, wenn ich den Vorgang in eine Log Datei schreiben möchte, einfach hinter dem rsync Befehl > /var/log/rsync.log hinzufügen?
Die brauchst du nicht vorab zu erstellen, die wird automatisch mit dem ">"-Zeichen angelegt. Die vorab angelegte Datei würde ohnehin überschrieben.Die Datei habe ich erstellt.
Nein. Das, was du da machst, ist ja eigentlich keine Logdatei sondern nur eine Ausgabeumleitung. Die Datei wir mit dem Besitzattribut desjenigen angelegt, der dein Backup ausführt und es ist für denjenigen schreib- und lesbar.Ist es notwendig der Log-Datei irgendwelche Rechte zu geben
Re: Cifs und Rsync
Das kommt darauf an. Eine Logdatei ist eine Dokumentation eines Arbeitsvorgangs. Es könnte daher sinnvoll sein, dafür zu sorgen, dass kein Unbefugter sie liest oder beschreibt. Das ist aber keine technische, sondern eine organisatorische Frage.fefor90 hat geschrieben:11.08.2022 06:53:46Ist es notwendig der Log-Datei irgendwelche Rechte zu geben oder reicht es, wenn ich das gesamte Skript ausführbar mache?
Was du auf keinen Fall tun solltest ist, der Logdatei Ausführungsrechte zu geben. Im schlimmsten konstruierbaren Fall taucht darin mal eine Zeile auf, die ein valides Kommando enthält, welches bei Ausführung Schaden anrichten würde. Und dann vergisst jemand beim Versuch die Datei zum Lesen zu öffnen, den Editor aufzurufen und führt die Datei versehentlich aus.
Zugegeben, das Problem ist sehr konstruiert, aber es lässt sich durch saubere Rechtevergabe einfach abwenden.
Tendenziell stimme ich dir zu. Falls man aber weiß, dass man nur Daten dieses einen Nutzers sichern will, dann ist das unproblematisch.MSfree hat geschrieben:11.08.2022 08:14:08Meiner Meinung nach ist es keine gute Idee, rsync über CIFS zu fahren.Via CIFS ist man auf dem Server mit einem bestimmten Benutzerkonto angemeldet, hat also nur Berechtigungen, auf Dateien zuzugreifen, die man mit diesem Benutzerkonto lesen/schreiben darf. Backups sollten aber den kompletten Datenbestand erfassen, auch den anderer Benutzer.
Falls es dann doch (versehentlich oder absichtlich) Daten anderer Nutzer gibt, die sich über cifs nicht sichern lassen, dann wird rsync dafür eine Fehlermeldung ausgeben. Das wiederum bedeutet, dass der Exit-Code nicht mehr 0 sein wird und falls man diesen automatisch prüft, wird man so "unnötige" Fehlermeldungen bekommen.
Vorsicht! Fehlermeldungen schreibt rsync nach STDERR, nicht nach STDOUT. Wenn man diese also ebenfalls im Protokoll haben will, dann muss man STDERR umleiten. Alternativ kann man das auch als Feature sehen, und für Fehlermeldungen gezielt ein gesondertes Protokoll anlegen.MSfree hat geschrieben:11.08.2022 08:14:08Ja, so mache ich das auch.Muss ich, wenn ich den Vorgang in eine Log Datei schreiben möchte, einfach hinter dem rsync Befehl > /var/log/rsync.log hinzufügen?
Auch hier Vorsicht! Ob bereits existierende Dateien bei einer einfachen Umlenkung überschrieben werden, hängt von der umgebenden Shell ab. Man kann das Überschreiben erzwingen, indem man noch ein Ausrufezeichen mitgibt (">!").MSfree hat geschrieben:11.08.2022 08:14:08Die brauchst du nicht vorab zu erstellen, die wird automatisch mit dem ">"-Zeichen angelegt. Die vorab angelegte Datei würde ohnehin überschrieben.
Re: Cifs und Rsync
Zu dem Thema zitiere ich mal den ersten Post:hikaru hat geschrieben:11.08.2022 09:10:41Falls es dann doch (versehentlich oder absichtlich) Daten anderer Nutzer gibt, die sich über cifs nicht sichern lassen, dann wird rsync dafür eine Fehlermeldung ausgeben. Das wiederum bedeutet, dass der Exit-Code nicht mehr 0 sein wird und falls man diesen automatisch prüft, wird man so "unnötige" Fehlermeldungen bekommen.
Möglicherweise ist die Ursache dieses "irgendwas" das Problem, daß einige Dateien nicht les/schreibbar sind.Ich habe versucht das Problem mit Rsync zu lösen, aber irgendwas läuft schief.