Hallo zusammen. Ich habe folgendes vor :
Ich habe 2 Raspberry Pi.
Auf dem ersten Soll ein kleiner File Server laufen. Dazu habe ich einen Samba Server am laufen.
Auf dem zweiten soll ein Jenkins Server laufen.
Ich möchte nun per Jenkins Job Daten auf den ersten PI sichern.
Konkret soll im zweiten Pi ein Verzeichnis gemoutet werden, dass regelemäßig gesynct werden soll.
Ein weitere Verzeichnis soll gememountet werden, das auf dem 1. Pi existsiert. Dorthin soll die Datensicherung erfolgen.
Ich hoffe es nicht zu kompliziert. Konkret habe ich nun folgendens Problem :
das Verzeichnis auf der Jenkins Maschine wird wie folgt gemountet:
sudo mount -t cifs //pi-data/Cloud-Sandra /mnt/backup/HomeSandra/target -o "defaults,noperm,rw,username=USER,password=PASSWORD,uid=pi,gid=pi"
Das mounten funktioniert auch. Allerdinge wenn ich versuche mit dem pi user Dateien zu löschen bekomme ich einen Permission Denied.
Hat jemand eine Idee wie idas hinbekomme ?

  • Dirk hat auf diesen Beitrag geantwortet.

    8u3631984 Hat jemand eine Idee wie idas hinbekomme ?

    Statt die Sicherung über mehrere Protokolle und Mountpoints hinweg laufen zu lassen, warum nicht einfach rsync untereinander?

    Hallo Dirk, danke für deine Antwort. Das zu sichernde Laufewerk befindet sich auf einer Synology. Daher muss ich das Synology Verzeichnis readonly mounten.
    Auf meinem PI - Laufwerk sollen dann immer 2 Sicherungen vorbehalten werden.

    Über den Jenkins soll dann ein Sicherungsjob laufen

    Oder um es mal ganz anders zu fragen :
    Wenn ich per cifs ein Verzeichnis mounte wie kann ich dann in diesem Verzeichnis Dateien und Ordner löschen.
    Was muss es da für Vroraussetzungen geben

    Ich verstehe nicht, wieso du eine Datensicherung über den Umweg von Jenkins machst. Jenkins ist hauptsächlich für CI/CD geeignet.

    Für eine Datensicherung bieten sich doch eher Systemd Units und Timers an (oder Cronjobs).

    Es wäre auch hilfreich, wenn du die kompletten Fehlermeldungen zeigen würdest (inklusive dem Befehl und Prompt) und ausserdem die Ausgabe von mount und ls -l von den Dateien.

    Danke für deine Antwort.

    Ich verstehe nicht, wieso du eine Datensicherung über den Umweg von Jenkins machst. Jenkins ist hauptsächlich für CI/CD geeignet.

    Also ich möchte regelmäßig eine Datensicherung / Kopie von einem Verzeichnis auf einer Synology machen. Diese Sicherung soll auf eine seperate Festplatte geschrieben werden. Im Fehlerfall soll der Nutzer eine Mail bekommen.

    Für eine Datensicherung bieten sich doch eher Systemd Units und Timers an (oder Cronjobs).

    Das hatte ich nicht auf dem Schirm. Ist vielleicht etwas einfacher zu realisieren werden ich mich mal einarbeiten. Hatte den Jenkins eh am Start und dachte mir das geht ja damit auch

      8u3631984 Hatte den Jenkins eh am Start und dachte mir das geht ja damit auch

      Das geht sicher irgendwie. Bei Linux kann man es immer auf verschiedene Arten machen und auch fast nach Belieben so kompliziert, wie man will.

      Bei Jenkins ist halt die Gefahr, dass du in einer riesigen Groovy-Orgie endest, um 1-2 Zeilen Shell-Code zeitbasiert auszuführen. Und wenn du dann noch verschiedene Plugins dazu "brauchst", dann hast du noch weitere Komplexitäten drin, die du beachten solltest (Jenkins-Version und Plugin-Versionen, deprecated Plugins, ungepflegte Plugins, Konfigurationsänderungen bei Plugins, überhaupt die Plugins richtig zu konfigurieren, eventuell auch auch passendes IAM entwickeln, falls mehrere Benutzer Zugriff auf Jenkins haben). Und wenn du die ganze Pipeline dann noch "dockerisierst", dann bist du definitiv auf einem sehr modernen Stand der Technik. Wenn du dich mit Jenkins fit genug fühlst, kannst du es von mir aus gerne so machen. Mir persönlich erscheint es aber ein bisschen übertrieben.

      Ich würde es an deiner Stelle Schritt für Schritt angehen. Für Datensicherungen ist rsync ziemlich beliebt und auch sehr mächtig.

      Ich würde zuerst versuchen, mit deinem Nutzer und rsync manuell ein paar Datensicherungen anzustossen. Wenn das dann funktioniert, dann könntest du mit systemd oder einem Cronjob arbeiten (andere Umgebung). Wenn auch das funktioniert, könntest du es immer noch mit Jenkins nachprogrammieren/umsetzen.

      Mit jedem Schritt sammelst du Erfahrungen. Aber das Problemfeld ist immer noch klein genug, dass du gezielter nach Lösungen suchen kannst.

      Du benötigst nur einen Rpi4 dafür!
      Du kannst an USB3 auch mehrere Festplatten betreiben, allerdings sollte, wenn es mehrere Platten sind , ein USB3-Hub mit eigener Stromversorgung dazwischen hängen.

      Mein Rpi4 (Ich schreibe diese Zeilen gerade damit) dient mir a) als stromsparender, geräuschloser Rechner, der 24/7 läuft um schnell ins Internet gehen zu können oder mal eine E-Mail abzurufen, b) als NAS um mit allen Notebooks jederzeit auf meine Daten zugreifen zu können, oder mal einen blöden Film in der Badewanne anschauen zu können und c) für eine automatische Datensicherung mit rsync.

      Von Jenkins verstehe ich leider gar nichts, aber hier wären mal die beiden Anleitungen die du für mein Konzept nutzen kannst. Ich bin lange nicht so bewandert wie Gerry_Ghetto, aber ich würde dir den gleichen Tipp geben wollen. Die einfachste Lösung ist oft auch die beste.

      NAS mit nfs, Automatische Sicherung