Raspberry pi3 als backup server via rsync

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo zusammen.

    Seit Jahren sichere ich die komplette home Partition meines Linux Rechners auf einer externen HD (Partition heißt Linux_Backup) mit einem einfachen rsync script.

    Hier stark vereinfacht:

    Bash
    #!/bin/bash
    
    #Meldung ausgeben
    notify-send -i /home/user/.icons/Container.png "Dateien werden gesichert..."
    
    # Sicherung mittels rsync komplettes home-Laufwerk
    rsync -a  /home/user/  /media/backup/Linux_Backup/Backup 
    
    notify-send -i /home/user/.icons/Cool-icon.png "Sicherunge abgeschlossen"

    Jetzt will ich das ganze per crontab oder anacron automatisieren. Mein pi3 bleibt den ganzen Tag eingeschaltet und ist per wlan im Heimnetz. Ermitteln der UUID und eintragen in die fstab wird kein Problem sein. Mir fehlt jetzt aber der Tipp, wie ich mein script erweitern muss, damit ich den pi3 (pi@xxx.xxx.x.x) per ssh erreichen kann und kein Passwort abgefragt wird. Bzw. wie ich ein ssh Schlüssel erstelle und der ohne Abfrage eingetragen wird.

    MfG,

    Suwo

  • Bevor ich das teste, noch paar Fragen: Kann ich trotz des Erstellens eines Passwortes wie gewohnt auf den pi 3 zugreifen? Also ssh pi@xxx.xxx.x.xx Grund: Der raspi hat noch andere Funktionen, z.B. Steckdosensteuerung, da muss ich dann manuell zugreifen. Und wie schreibe ich konkret den Schlüssel korrekt in das Bachupscript?

    mfG,

    Suwo

  • Erstelle einen extra-Key ohne Passphrase nur für die Backups. In rsync bindest du den dann so ein:

    rsync -aux -e "ssh -i /Pfad/zum/BackupKey" ....

    //Edit

    Text gelöscht, der nur bei "Server holt Backups" relevant war.

    Wenn du nichts zu sagen hast, sag einfach nichts.

    2 Mal editiert, zuletzt von llutz (31. Januar 2018 um 19:56)

  • Die Punkte natürlich nicht! Die dienten nur als Hinweis, dass dein normales rsync-Kommando dort weitergeht.

    rsync -aux -e "ssh -i /Pfad/zum/BackupKey" /pfad/quelle host:/pfad/ziel

    Der Teil zwischen den Anführungszeichen wird so als eine Option dem '-e' übergeben, ohne würde rsync versuchen das '-i' und den Key-Pfad auszuwerten.

    Das '-i /pfad/..." gehört aber zu 'ssh' .

    Wenn du nichts zu sagen hast, sag einfach nichts.

    Einmal editiert, zuletzt von llutz (3. Februar 2018 um 10:15)

  • Ups.

    Habe den Mund wohl zu voll genommen. Ich habe die Werte der HD mit sudo blkid ermittelt:

    Code
    /dev/mmcblk0p1: LABEL="boot" UUID="0298-4814" TYPE="vfat" PARTUUID="8ec53029-01"
    /dev/mmcblk0p2: LABEL="rootfs" UUID="d4f0fd64-ad9d-4cfd-aa76-8d3541fbf008" TYPE="ext4" PARTUUID="8ec53029-02"
    /dev/mmcblk0: PTUUID="8ec53029" PTTYPE="dos"
    /dev/sda1: LABEL="Linux_Backup" UUID="4e36eea5-8592-4098-8bf3-1887ad0300e3" TYPE="ext4" PARTUUID="0025fe5e-01"
    /dev/sda2: LABEL="Windows" UUID="1F8B7AB65472EA7B" TYPE="ntfs" PARTUUID="0025fe5e-02"

    Meine fstab sieht jetzt so aus:

    Code
    proc            /proc           proc    defaults          0       0
    PARTUUID=8ec53029-01  /boot           vfat    defaults          0       2
    PARTUUID=8ec53029-02  /               ext4    defaults,noatime  0       1
    # a swapfile is not a swap partition, no line here
    #   use  dphys-swapfile swap[on|off]  for that
    
    # externe HD
    #UUID=0025fe5e-01 /media/pi/Linux_Backup        ext4    defaults        0       2
    #UUID=0025fe5e-02 /media/pi/Windows     ntfs    defaults        0       2
    #

    Wenn ich die HD einbinde (Raute vor UUID entferne) startet der pi nicht mehr. Nach einer Weile kommt dann root is locked. Habe ich wohl irgendwie einen Fehler in der fstab. Bin aber nach dem wiki Ubuntuusers vorgegangen.

    Kann mir jemand den Fehler zeigen?

    Danke im voraus,

    Suwo

    • Offizieller Beitrag

    Beide Einträge (ext4 und NTFS) zeigen auf die zweite Partition. //Edit: Ich schrieb Unsinn... Wer lesen kann ist klar im Vorteil.

    Davon ab, würde ich bei einer externen HDD zusätzlich die Option nofail setzen, damit auch bei nicht vorhanden sein gebootet wird.

  • So. Mit der Linux Partition bootet der pi, mit der Windows Partition nicht.

    fstab:

    Code
    proc            /proc           proc    defaults          0       0
    PARTUUID=8ec53029-01  /boot           vfat    defaults          0       2
    PARTUUID=8ec53029-02  /               ext4    defaults,noatime  0       1
    # a swapfile is not a swap partition, no line here
    #   use  dphys-swapfile swap[on|off]  for that
    #Externe HD
    PARTUUID=0025fe5e-01 /media/pi/Linux_Backup     ext4    defaults        0 0
    #PARTUUID=0025fe5e-02 /media/pi/Windows          ntfs-3g defaults        0 0

    Gruß,

    Suwo

  • Die habe ich extra deaktiviert, weil der pi nicht startet wenn sie aktiviert ist. Ich habe die jetzt auskommentiert um sie hier in das Forum zu stellen.

    Während ich noch mit der fstab kämpfe habe ich aber schon mal das script geändert. Klappt aber nicht. Ist bestimmt die falsche Syntax.

    Bash
    #!/bin/bash
    
    # Testkopie vom Desktop Verzeichnis  Test zum pi pi@192.168.0.35
    
    rsync -aux -e /home/wolle/Desktop/Test "ssh -i /home/pi/.ssh" /media/pi/Linux_Backup

    Gruß,

    Suwo

    Einmal editiert, zuletzt von suwo (2. Februar 2018 um 11:50)

  • Code
    PARTUUID=0025fe5e-01 /media/pi/Linux_Backup     ext4    defaults        0 0
    rsync -aux -e /home/wolle/Desktop/Test "ssh -i /home/pi/.ssh" /media/pi/Linux_Backup

    Wieso braucht eine lokal via fstab verbundene Platte eine SSH-Verbindung um Dateien zu kopieren? Ist das was neues?

  • rsync -aux -e /home/wolle/Desktop/Test "ssh -i /home/pi/.ssh" /media/pi/Linux_Backup

    Guck noch mal meinen Beitrag oben an, vergleiche und korrigiere.

    Ansonsten kann man dir nur raten die verlinkten Artikel zu lesen, Stück für Stück.

    Teile dein Problem auf:

    - lokales mounten deiner backup-Platte, händisch

    - lokales mounten deiner backup-Platte, automatisch (fstab oder systemd)

    - Erstellen eines spez. ssh-keys ohne Passphrase NUR für Backups

    - Benutzen dieses Keys

    - Benutzen von rsync, händisch

    - ....

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • Die HD ist eine externe die ich an dem pi betreiben will. Das Backup kommt von meinem PC (Linux) mit dem ich per ssh auf den pi zugreife.

    Warum erstellst Du nicht einfach einen Sambashare für die USB-.Festplatte auf dem PI? Den kannst Du dann einfach via fstab oder manuell auf dem Linux-PC mouten und dann lässt Du das Backup laufen. Einfacher gehts doch gar nicht und den Quatsch mit einem rsync via SSH kann man sich dann sparen. Und der reguläre SSH-Zugang zum PI würde ebenfalls ganz normal funktionieren. Gibt es spezielle Gründe, die gegen Samba sprechen?

  • Gibt es spezielle Gründe, die gegen Samba sprechen?

    Bei einem Linux PC, einem Linux Pi und einer EXT4 HD-Sicherung (zu Aufrechterhaltung der Dateirechte) wäre Samba, das auch nur im Userspace läuft, keine gute Idee. Dann eher noch NFS, das ja im Linux Kernel integriert ist.

    Rsync hat 3 Betriebsmodi. local, remote-shell und rsync daemon, jeweils push, oder pull. Das braucht keinen eigener Samba-User dazwischen, der noch alle Dateirechte verbiegt und auf 2 Linuxsytemen den Durchsatz bremst.

    Servus !

    RTFM = Read The Factory Manual, oder so

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!