Automatische Backups von Webserver via SFTP zu NAS mit SSH Keys

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

ActividPhil

Benutzer
Registriert
28. Juli 2021
Beiträge
5
Reaktionspunkte
1
Punkte
3
Hallo liebste Foren-Mitglieder,

ich habe mir vor kurzem eine DS920+ angeschafft und versuche aktuell folgendes zu replizieren:
https://www.synology-forum.de/threads/backup-sync-von-externem-sftp-server.82684/

Ich möchte also, dass sich meine NAS regelmäßig selbst via SFTP mit meinem Webserver verbindet und dort die Inhalte mehrerer Ordner herunterlädt (nicht nur kopieren).

Ich habe auch bereits die meisten Schritte geschafft:
- SFTP-Verbindung zu Server freigeschaltet
- SSH Keys erstellt und korrekt hinterlegt (manueller Login darüber funktioniert)
- Aufgabe erstellt wie im oben genannten Beitrag:
Code:
#!/bin/bash

scp -i /volume1/schluessel -p webserver-nutzer@webserver-IP:/pfad/zu/quellordner/ /pfad/zu/zielordner/

Mein Problem tritt jetzt anscheinend während des Login-Prozesses auf. Hier taucht nämlich eine Abfrage auf, ob die Verbindung tatsächlich hergestellt werden soll, da der Host nicht verifiziert werden konnte. Wähle ich hier manuell "Ja" wird mir gesagt, dass der Host nicht zu den Known_Hosts hinzugefügt werden kann. Hier dürfte ja auch die automatisierte Durchführung hängen bleiben, da sie keine Abfragen beantworten kann.
Ich habe bereits nach der "known_hosts"-Datei gesucht, finde sie jedoch gar nicht. Wie kann ich also diese Verbindung bzw. meinen Webserver gegenüber meinem NAS als verifiziert abspeichern?

Und nachdem ich mich jetzt 5h lang wundgegoogelt habe, hoffe ich auf Eure Hilfe :-D

Vielleicht kennt ja auch jemand einen anderen (aber bitte sicheren :-P) Weg, das Ziel zu erreichen. Einen Login des Webserver oder anderer externer Programme auf den NAS möchte ich allerdings nicht!
 
Das Problem ist, dass das Script den Dialog zu erstmaligen Anmeldung am externen Server nicht beantworten kann.
Du musst also über die Konsole der Syno diese Verbindung manuell einmalig herstellen. Dann geört die Syno zu den wellknown hosts und das Script läuft durch.
 
Das habe ich bereits getan. Ich erhalte dann jedes Mal nach der manuellen Bestätigung:

Code:
Failed to add the host to the list of known hosts (/var/services/homes/mein-nas-benutzername/.ssh/known_hosts).

Achja, und beim Login via SSH auf den NAS versucht er, via chdir in das Home-Directory meines Admin-Benutzers zu wechseln, kann dies jedoch nicht, da dieses Verzeichnis anscheinend gar nicht existiert. Dann kann ja auch das oben beschriebene Verzeichnis, bei dem die Known-Hosts zu finden wären, gar nicht existieren :-/
 
Dann ist der Benutzer-Home Dienst auf der DS vermutlich nicht aktiviert im DSM.
 
Alles klar, daran hat's gelegen. Jetzt hat er den Eintrag gesetzt. Super, vielen Dank schon mal :D

Kannst Du mir vielleicht noch dabei helfen, wie ich das Script oben ummodeln kann?
Code:
scp -i /volume1/schluessel -p webserver-nutzer@webserver-IP:/pfad/zu/quellordner/ /pfad/zu/zielordner/

Das Ziel soll quasi die folgende Abfolge sein:
1. Login auf dem Webserver
2. Verschieben aller Dateien in /webserver/Ordner1/ zu /nas/Ordner1/
3. Verschieben aller Dateien in /webserver/Ordner2/ zu /nas/Ordner2/
[...]
4. Logout vom Webserver

Mit der bisherigen Zeile würde er ja nach meinem Verständnis den einen Ordner kopieren und sich anschließend wieder ausloggen, oder? Mir wäre halt wichtig, dass die Dateien verschoben werden und nicht nur kopiert. Ich hoffe, ich bin da nicht zu anstrengend - Bash-Scripte sind noch sehr neu für mich ^^'
 
Du meinst sie sollen auf dem Webserver gelöscht werden?
 
Ich hab es hinbekommen :D

Code:
rsync --remove-source-files --bwlimit=3000 -a -e 'ssh -i /pfad/zum/key' webserver-benutzer@webserver-IP:pfad/zum/quellordner/ /pfad/zum/zielordner

Damit werden alle Dateien im Quellordner in den Zielordner kopiert und anschließend im Quellordner gelöscht. Außerdem habe ich noch eine Begrenzung der Bandbreite von 3MB hinzugefügt, um nicht die komplette Bandbreite zu blockieren :-D
 
  • Like
Reaktionen: Fusion
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat