PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : automatische backup und download von Serverdateien



PeHeller@gmx.net
23.04.16, 06:33
Hallo,

ich möchte ein automatisches backup von bestimmten Serverdateien programmieren, jedoch soll der Server selbst nichts machen, sondern
es soll von Fern gesteuert werden.

z.B.

1. automatische einloggen vom Hauptserver in den jeweiligen z.B. "Filialserver"
2. starten eines eigenen Backupprogrammes auf dem "Filialserver"
3. Herunterladen der Backupdatei auf den Hauptserver
4. löschen der Backupdatei
4. login beenden
5. löschen aller backupdateien auf dem Hauptserver die älter als z.B. 1 Jahr sind

Programmierung in shell/bash oder perl (ich denke shell/bash wäre besser)
Wie könnte so etwas laufen ?
Ich habe hier überhaupt keine Ahnung, aktuell mache ich es manuell. Bitte auch um Vorschläge.

Gruß

marce
23.04.16, 08:54
SSH mit KeyAuth - der Rest ergibt sich dann quasi von alleine.

fork
23.04.16, 11:48
rsnapshot?

https://wiki.ubuntuusers.de/rsnapshot/

Huhn Hur Tu
23.04.16, 12:55
while read Server ; do

scp backupscipt.sh backupuser@$Server:/bin/
ssh backupuser@$Server "$HOME/bin/backupscipt.sh"
scp backupuser@$Server:/backupverzeichniss/backup_des_tages.tar.gz /backup_local/
ssh ssh backupuser@$Server "rm $HOME/bin/backupscipt.sh"

done < serverlist


evtl das Skript in "screen" oder mit "nohup" laufen lassen, damit ein Verbindungsabbruch das Skript toetet.
SSH mit Auth key


Gruss Stefan

PeHeller@gmx.net
24.04.16, 19:39
Hallo Stefan,




while read Server ; do

scp backupscipt.sh backupuser@$Server:/bin/
ssh backupuser@$Server "$HOME/bin/backupscipt.sh"
scp backupuser@$Server:/backupverzeichniss/backup_des_tages.tar.gz /backup_local/
ssh ssh backupuser@$Server "rm $HOME/bin/backupscipt.sh"

done < serverlistservername



Das gefällt mir doch schon sehr gut.



evtl das Skript in "screen" oder mit "nohup" laufen lassen, damit ein Verbindungsabbruch das Skript toetet.
SSH mit Auth key


Ich dachte screen und nohup sind dafür da, damit Programme weiter laufen wenn die Verbindung abbricht ?

Jetzt habe ich nur ein Problem, per PublicKey kann ich mich nur als user anmelden, aber zum backup brauche ich root rechte, wie stelle ich das an ?



ssh servername@x.x.x.x "echo passroot | sudo -S $backuppath/backup.sh passsql"
scp servername@x.x.x.x:/$backuppath/*.tar.gz $HOME


Ich will also mit sudo root rechte das script backup.sh starten, das wiederum als parameter (arg) ein passwort für interne funktionen mitbekommt.
Das funktioniert hier nicht,
1. root wird nicht benutzt.
2. das passsql wird nicht an das script backup.sh übergeben (vielleicht auch nur ein folgefehler ;-)

Die Pfade sind richtig.

Gruß

Huhn Hur Tu
25.04.16, 05:56
Versuche per SSH nur einen einzigen Befehl zu senden, besodnern bei "|" ist das etwas Tricky

Also packe dein passroot .... in ein Skript, aka backupd_wrapper.sh oder gleich in dein Backupskript, bzw, verwende einen dedizierten User, der Passwortfrei die sudo Funktionalitaeten verwenden kann --> /etc/sudoers ist dein Freund

Gruss Stefan

PeHeller@gmx.net
25.04.16, 19:12
Hallo,

Versuche per SSH nur einen einzigen Befehl zu senden, besodnern bei "|" ist das etwas Tricky

Also packe dein passroot .... in ein Skript, aka backupd_wrapper.sh oder gleich in dein Backupskript, bzw, verwende einen dedizierten User, der Passwortfrei die sudo Funktionalitaeten verwenden kann --> /etc/sudoers ist dein Freund

Gruss Stefan

Das senden von sudo per ssh ist extrem Tricky. Mindestens 30 Versionen probiert und nichts geht.
Ich will das root Passwort nicht an den Server (im backupscript) senden. Wenn die Verbindung abreisst, liegt ein Sript
am Server mit rootpasswort.
Selbst wenn alles gut geht, liegt das Script eventuell für Minuten am Server bevor alles abgeschlossen ist und das Script wieder gelöscht wird.

Einen neuen user mit rootrechten anlegen .... der ist ja immer vorhanden und könnte alles ....
Den ssh Zugang für root will ich ebenfalls nicht öffnen ... ich habe extra diese Tür zugemacht.

Ich hätte nicht gedacht, das das so ne harte Nuss wird ;-)

Bin für jeden Tip dankbar.
Gruß

marce
25.04.16, 19:16
sudo per ssh ist eigentlich völlig problemlos. Entscheidend ist die Fehlermeldung und die sudo-Konfiguration. Ich tippe mal auf requiretty.

Ach ja - Variablenersetzung erfolgt vor dem ssh, also auf dem System, von dem aus ssh'd wird...

nopes
25.04.16, 21:47
Nur so als Denkanstoß:


# "client"
ssh user@server 'command flag_1 flag_2 ... option_n="bar"'




# "server - command"
#!/bin/bash
sudo real_command $@


Du kannst sudo relativ einfach beibringen, dass bestimmte Benutzer bestimmte Kommandos ohne Kennworteingabe ausführen dürfen (im "Beispiel" müsste also dafür gesorgt werden, dass user das Kommando "real_command" ohne Kennworteingabe als Root ausführen darf) - http://askubuntu.com/questions/159007/how-do-i-run-specific-sudo-commands-without-a-password

[edit]Was dann auch dirket ohne Skript drumherum gehen sollte...