Automatisierte Websiten-Backups

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
d33eniz
Beiträge: 9
Registriert: 27.05.2014 10:14:26

Automatisierte Websiten-Backups

Beitrag von d33eniz » 27.05.2014 12:16:30

Hallöchen liebe debianforum.de-Community!

Erst einmal Entschuldigung, ich bin ein absoluter Laie auf Linux-Ebene, deswegen steinigt mich bitte nicht sofort :x
Ich habe folgendes gemacht, bzw. habe ich folgendes vor:
Ich habe in unserem Büro unser NAS mit dem Server verbunden (auf dem Debian 7.4 x64 läuft) per

Code: Alles auswählen

mount -t nfs 172.18.28.150:/mnt/array1/Backup /mnt/NAS
Dann habe ich folgende Zeile der fstab-Datei hinzugefügt:

Code: Alles auswählen

//172.18.28.150:/mnt/array1/Backup /mnt/NAS nfs rw,hard,intr 0 0
Das sorgt ja dafür, dass bei Systemstart das NAS gemountet wird und der Zusatz "hard", falls das NAS währenddessen oder allgemein aus sein sollte, ein Wiederverbindungs, bzw. Mountversuch gestartet wird, oder?
Soweit, so gut, jetzt bin ich soweit, dass ich weiß, dass ich per

Code: Alles auswählen

wget -r -l 0 ftp://user:passwort@www.backup-seite.de
alles, was auf dem Webserver liegt, herunterladen kann.

Aber das ist auch schon alles, was ich alleine geschafft habe ._." Ich hätte folgendes Anliegen, bzw. müsste folgendes noch gemacht werden:
1. Die Befehle zu haben ist schonmal schön (und ein Erfolg für mich persönlich =D), aber das ganze soll ja automatisiert werden, sprich, der Server soll automatisch zB. am 1. jeden Monats alles von den jeweiligen Webservern herunterladen nach

Code: Alles auswählen

/mnt/NAS/Backups/jeweiliger-KundeA-ordner
/mnt/NAS/Backups/jeweiliger-KundeB-ordner
...
Wenn ich alles richtig verstanden habe, müsste ein "Cron" oder "Cronjob" sowas machen können, nur habe ich 0 Ahnung und mein Hirn raucht vor lauter neuem Zeug, das ich gelernt habe D:
Wo müsste ich was bearbeiten, damit die Backups in bestimmten Zeitabständen in bestimmte Ordner gepackt werden?
2. Wenn das soweit passt, werden die vorhandenen Dateien ja aber jedes mal überschrieben. Das ganze soll aber inkrementell geschehen, sodass ich nach einem Jahr beispielsweise 12 Backups habe, die anfangen bei "kundenordner_01", "kundenordner_02" etc. ... Wie funktioniert sowas?
3. Optional, wenn jemandem etwas auf die schnelle etwas einfällt, okay, wenn nicht, ist auch nicht schlimm- ab dem 13. Backup sollte das älteste Backup gelöscht werden, dabei ist es irrelevant ob es dann wieder von vorne losgeht ab dem Zeitpunkt mit "kundenordner_01" oder ob es weitergeht mit "kundenordner_13"- wie?
4. Auch EHER optional: Eine Art Benachrichtigung, wenn die Backups erfolgreich beendet wurden (oder eben NICHT), oder ein Logeintrag oder sonstirgendwas- am liebsten eine Email-Benachrichtigung.

Am wichtigstens wäre natürlich 1. und 2.

Falls das unglaublich triviale Dinge sind, tuts mir echt Leid, bin leider nur Mediengestalter und versuche mich hier durchzuwühlen und es einigermaßen zu verstehen =)
Über hilfreiche/lehrreiche Links wäre ich auch froh =)

MfG,
- Deniz

Colttt
Beiträge: 3012
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: Automatisierte Websiten-Backups

Beitrag von Colttt » 27.05.2014 12:28:52

Hallo und herzlich willkommen!!

mit cron bist du schon sehr richtig..

für den rest würde ich ein kleines script bauen..

Code: Alles auswählen

#!/bin/bash
#heutiges datum
datum=`date +%F` 

#ins verzeichnis wechseln
cd /mnt/NAS/Backups/Kunde1
#alles herunterladen und gleich in den ordner {datum} reinstopfen
wget -P {datum} -r -l 0 ftp://user:passwort@www.backup-seite.de

if [ $? -eq 0 ]; then
  echo "Backup erfolgreich" |mail -s "Backup" du@ich.de
else
  echo "Backup nicht erfolgreich" |mail -s "Backup" du@ich.de
fi

#alte daten suchen und löschen
find /mnt/NAS/Backups/Kunde1 -type d -mtime +365d
ob es so klappt weiss ich nicht, habs grade nur so aus dem kopf gebaut und es müsste noch eingies angepasst werden, aber im groben sollte es gehen

zwecks cron schau mal hier: http://debian-handbook.info/browse/de-D ... n-atd.html
Debian-Nutzer :D

ZABBIX Certified Specialist

uname
Beiträge: 12403
Registriert: 03.06.2008 09:33:02

Re: Automatisierte Websiten-Backups

Beitrag von uname » 27.05.2014 14:18:58

Ob es wirklich sinnvoll bzw. korrekt ist FTP-Speicher mit Debianwget zu downloaden weiß ich nicht. Schau dir vielleicht noch Debiancurlftpfs oder besser Debianncftp (dort ncftpget) an. Generell wären jedoch Transportprotokolle auf SSH-Basis wohl besser ... von der Sicherheit mal ganz abgesehen. Aber ich denke dem Kunden gehört der Webspace (FTP-Zugang) und du machst die Arbeit. Besser wäre wohl wenn ihr den Webspace auch hosten würdet bzw. hosten lassen würdet am besten mit ordentlichen Zugängen (ssh, scp, sftp). Dann könnte man auch ordentlich und vor allem sicher arbeiten.

d33eniz
Beiträge: 9
Registriert: 27.05.2014 10:14:26

Re: Automatisierte Websiten-Backups

Beitrag von d33eniz » 02.06.2014 12:08:43

Danke für die Hilfe!

Das Skript scheint zu funktionieren (zumindest tut es das bis jetzt :P)- allerdings scheitere ich an der SFTP-Variante, die funktioniert nicht wirklich. Ich bin mir nicht sicher, was ich genau als Skript schreiben soll?
Wie automatisiere ich einen SFTP-Download von Remote-Server -> Lokaler Server?

Habe mir SCP und SFTP mal angeschaut, allerdings werde ich nicht schlau daraus.

Code: Alles auswählen

Ob es wirklich sinnvoll bzw. korrekt ist FTP-Speicher mit Debianwget zu downloaden weiß ich nicht. Schau dir vielleicht noch Debiancurlftpfs oder besser Debianncftp (dort ncftpget) an. Generell wären jedoch Transportprotokolle auf SSH-Basis wohl besser ... von der Sicherheit mal ganz abgesehen. Aber ich denke dem Kunden gehört der Webspace (FTP-Zugang) und du machst die Arbeit. Besser wäre wohl wenn ihr den Webspace auch hosten würdet bzw. hosten lassen würdet am besten mit ordentlichen Zugängen (ssh, scp, sftp). Dann könnte man auch ordentlich und vor allem sicher arbeiten.
All unsere Kunden hosten bei ihren jeweiligen Anbietern, wenn sie Lust haben, können sie bei uns auch etwas vom Webspace haben. Aber danke, ich frage bei Alfahosting mal nach, ob mehr als nur "FTP"-Zugänge möglich sind.

MfG!

uname
Beiträge: 12403
Registriert: 03.06.2008 09:33:02

Re: Automatisierte Websiten-Backups

Beitrag von uname » 02.06.2014 12:36:53

sftp (basiert auf ssh) kannst du nur nutzen wenn es auch angeboten wird. In deinem Fall wäre "ncftpget" (Debianncftp) die richtigere Variante. Du kannst über eine Zeile einen Download durchführen. Statt es zu scripten versuche es erst mal an einem Beispiel aus.
Um etwas mehr Service für den Kunden zu bieten könntest du bei wiederholten (inkrementellen) Backups Analysen durchführen. Vergleicht man Backup-Versionen kann man meiner Meinung nach Schadcode durch Sicherheitslücken z.B. veraltete CMS-Systeme oder über gehackte Kunden-Windows-Systeme leicht erkennen, da massenhaft ohne Grund viele Dateien angepasst wurden.

d33eniz
Beiträge: 9
Registriert: 27.05.2014 10:14:26

Re: Automatisierte Websiten-Backups

Beitrag von d33eniz » 02.06.2014 13:21:26

Okay, habe den Skript vom ehrenwehrten Kollegen für SFTP-Zugänge angepasst und hänge etwas fest:

Code: Alles auswählen

# Backup-Skript!
#
#02-06-2014
#
#!/bin/bash
#heutiges datum
datum=`date +%F`

# Backup Kunde1
##########################

#ins verzeichnis wechseln
cd /mnt/NAS/Backups/Kunde1

#Ordner mit heutigem Datum erstellen
mkdir `date +%F`

#in Ordner mit heutigem Datum wechseln
cd /mnt/NAS/Backups/Kunde1/{datum}

#Einloggen und alles herunterladen
spawn  sftp  -b cmdFile user@host
expect  "password:"
send "passworthier";
quit
Die cmdFile sieht aus wie folgt:

Code: Alles auswählen

#cmdFile fuer SFTP-Zugriffe
#
#02-06-2014
#
#Theorethischer Upload:
#
#lcd /home/ftp/test
#cd /home/Kunde1/public_html/
#mput *.dat

#heutiges Datum
datum=`date +%F`

#Download:
lcd /mnt/NAS/Kunde1/{datum}
cd /home/Kunde1/public_html/
get -r *
Das Problem ist, cd {datum} funktionioert nicht (lcd {datum} habe ich nicht ausprobiert, aber wahrscheinlich dasselbe Ergebnis)- cd `date +%F` spuckt mir zwar keine Fehlermeldung aus, er geht aber auch nicht in den Ordner rein. Wie komme ich in diesen Ordner?

uname
Beiträge: 12403
Registriert: 03.06.2008 09:33:02

Re: Automatisierte Websiten-Backups

Beitrag von uname » 02.06.2014 13:42:30

Das sieht ja grausam aus. Also erst mal hat "cd" in einem Script nichts zu suchen. Und hast du nun wirklich sftp-Zugang? Warum dann keine SSH-Keys, was die ganze Interaktion mit Benutzer/Passwort einsparen würde? Und warum kein einfaches "rsync über ssh"?

d33eniz
Beiträge: 9
Registriert: 27.05.2014 10:14:26

Re: Automatisierte Websiten-Backups

Beitrag von d33eniz » 02.06.2014 14:30:50

Natürlich sieht das grausam aus, weil ich mich halt 0 auskenne, aber das habe ich schon im Startpost gesagt. Ich suche einfach nur eine Möglichkeit, das, was ich geplant habe, zu realisieren. Dabei ist mir die Ästethik vollkommen Wurst, solange es das tut, was es soll. Der Kollege Colttt hat das Skript ja etwas weiter oben gepostet, kannst es dir ja ansehen.

Code: Alles auswählen

Und hast du nun wirklich sftp-Zugang?
Ja.

Code: Alles auswählen

Warum dann keine SSH-Keys, was die ganze Interaktion mit Benutzer/Passwort einsparen würde? Und warum kein einfaches "rsync über ssh"?
Das mit den Keys habe ich probiert, aber offensichtlich mache ich irgendwas falsch, also habe ich versucht das Skript anzupassen.

Wäre echt cool, wennst dich wie ein menschliches Wesen mit mir unterhalten könntest, danke. Hilfreiche Tipps wären nett, ich habe eben keine Ahnung von dem ganzen Kram, aber ich versuche mir einigermaßen etwas anzueignen. Der Auto-Mechaniker sagt dir auch nicht "wie grausam" du doch die Reifen selbst gewechselt hast.

uname
Beiträge: 12403
Registriert: 03.06.2008 09:33:02

Re: Automatisierte Websiten-Backups

Beitrag von uname » 02.06.2014 14:36:42

Fangen wir ganz einfach an. Im Internet findest du Anleitungen wie man mit SSH-Keys arbeitet. Erstelle auf deinem Client ein SSH-Keypair (z.B. ssh-keygen -t rsa) und kopiere dann den Public-Key in die entsprechende authorized_keys auf dem Zielsystem. Wenn du dich dort per SSH bzw. sftp dann ohne Benutzer/Passwort anmelden kannst, kannst du dich wieder melden. Sollte es nicht gehen versuche es erst mal auf einem beliebigen Testsystem mit installiertem SSH-Server.

d33eniz
Beiträge: 9
Registriert: 27.05.2014 10:14:26

Re: Automatisierte Websiten-Backups

Beitrag von d33eniz » 02.06.2014 15:10:18

Okay, alles klar, habe nun die "key" und "key.pub" Dateien erstellen lassen. Und in welchen Ordner muss ich diese Dateien nun schieben?

Loggt man sich regulär ein, kommt man hier raus:
http://puu.sh/9bND4/506f15485a.png

Habe folgende Struktur auf der untersten Ebene:
http://puu.sh/9bNvl/de9fd0b466.png

EDIT: Folgendes:

Habe mir http://www.schlittermann.de/doc/ssh.html angeschaut.
Dann per ssh-copy-id die .pub Datei übertragen, folgende Meldungen kamen:
http://puu.sh/9bOpI/acfbb0f556.png
Habe danach versucht per sftp-Befehl mich einzuloggen, er verlangt immernoch ein Passwort. Habe ich irgendwas vergessen?

uname
Beiträge: 12403
Registriert: 03.06.2008 09:33:02

Re: Automatisierte Websiten-Backups

Beitrag von uname » 02.06.2014 15:26:53

Der Key gehört in die Datei /home/user/.ssh/authorized_keys2 wie ein Debianstrace über den SSH-Serverprozess zeigt.

Code: Alles auswählen

24067 open("/home/user/.ssh/authorized_keys2", O_RDONLY|O_NONBLOCK|O_LARGEFILE) = 4
24067 lstat64("/home/user/.ssh/authorized_keys2", {st_mode=S_IFREG|0644, st_size=1565, ...}) = 0
24067 open("/home/user/.ssh/authorized_keys2", O_RDONLY|O_NONBLOCK|O_LARGEFILE) = 4
24067 lstat64("/home/user/.ssh/authorized_keys2", {st_mode=S_IFREG|0644, st_size=1565, ...}) = 0

d33eniz
Beiträge: 9
Registriert: 27.05.2014 10:14:26

Re: Automatisierte Websiten-Backups

Beitrag von d33eniz » 02.06.2014 15:32:54

uname hat geschrieben:Der Key gehört in die Datei /home/user/.ssh/authorized_keys2
IN die Datei? Oder erstelle ich ein Verzeichnis, das "authorized_keys2" heißt und schiebe die key.pub da rein?

uname
Beiträge: 12403
Registriert: 03.06.2008 09:33:02

Re: Automatisierte Websiten-Backups

Beitrag von uname » 02.06.2014 15:33:49

Die Datei nennt sich so.

d33eniz
Beiträge: 9
Registriert: 27.05.2014 10:14:26

Re: Automatisierte Websiten-Backups

Beitrag von d33eniz » 02.06.2014 15:38:37

Müsste sich doch hiermit erledigt haben, der Key ist jetzt auf jeden Fall auf dem Zielsystem, oder?
http://puu.sh/9bOpI/acfbb0f556.png

Nach einem Blick sehe ich jetzt einen neuen Ordner namens .ssh und in diesem liegt eine "authorized_keys" Datei. Wie gehe ich nun weiter?

EDIT: Ein Blick per "ssh -v" zeigt mir folgendes an:
http://puu.sh/9bPx8/d963cee0c5.png

Ich habe die key einfach in id_rsa umbenannt- und siehe da, Zugriff erfolgt per "sftp nutzer@ip" und ich bin drin. Ohne Passwortabfrage- nur stellt sich für mich gerade eine Frage, was mache ich, wenn ich mehrere Schlüssel habe?

EDIT2: Ich merke gerade... Das hilft mir bei meinem ursprünglichen Problem kein Stück weiter. Schön und gut, dass ich mich nun "sicher" verbinden kann, aber es stellt sich immernoch die Frage, wie ich die Daten vom Server in den {datum}-Ordner bekomme, schliesslich kann ich das anscheinend ja nicht so eintippen. Was mache ich?

EDIT3: Die DRITTE. So, hat sich vollends erledigt. Statt cd {datum} kann ich ja auch einfach

Code: Alles auswählen

 cd `date +%F`
ansteuern. Meine Güte. Es funktioniort. Dauerte, aber es funktioniert nun immerhin. Ich poste die endgültige Lösung nachher. Nützt vielleicht noch irgendwem anderen.

uname
Beiträge: 12403
Registriert: 03.06.2008 09:33:02

Re: Automatisierte Websiten-Backups

Beitrag von uname » 02.06.2014 16:18:11

Und wenn es läuft solltest du das Script einfach wegwerfen. Ich habe mal ein Programm geschrieben, welches im übrigen auch das Datum nutzt. Vielleicht kannst du davon was gebrauchen. Sollte selbsterklärend sein ;-) Auf jeden Fall erst mit Testdaten probieren. Wobei eigentlich kann man ziemlich viel aus dem Script noch rauswerfen. Bleibt kaum mehr als eine sinnvolle Zeile übrig.

http://wiki.ubuntuusers.de/Skripte/Backup_mit_RSYNC

Kannst dir auch mal "rsnapshot" oder andere Tools anschauen. Warum alles neu erfinden.

d33eniz
Beiträge: 9
Registriert: 27.05.2014 10:14:26

Re: Automatisierte Websiten-Backups

Beitrag von d33eniz » 02.06.2014 16:25:19

Alles klar, dann bedanke ich mich ;)

Allerdings funktionert die `date +%F` nicht unter sftp- wie greife ich von da aus auf den relativen Ordner mit dem Datum zu? Wennst mir wenigstens das beantworten könntest fix, wäre ich wirklich dankbar, ich kann nämlich nimmer =)

EDIT: Währenddessen schaue ich mir mal den Link an...

uname
Beiträge: 12403
Registriert: 03.06.2008 09:33:02

Re: Automatisierte Websiten-Backups

Beitrag von uname » 02.06.2014 16:38:50

Mit sftp kenne ich mich nicht aus. Mein Script ruft es im Prinzip so auf:

Code: Alles auswählen

/usr/bin/rsync -e "/usr/bin/ssh -p 22 -l serveruser" -avR "server:/serverdir"  /localdir/140602 --link-dest=/localdir/last
(last zeigt auf den vergangenen Tag für inkrementelle Backups -> Stichwort Hardlinks)

Für deinen Zweck ohne inkrementelles Backup:

Code: Alles auswählen

/usr/bin/rsync -e "/usr/bin/ssh -p 22 -l serveruser" -avR "server:/serverdir"  /localdir/140602 
Man kann auch folgendes nutzen. War mir aber im Script zu gefährlich. Nutze ich eher wenn ich direkt kopiere als kleine Abkürzung:

Code: Alles auswählen

rsync -avR serveruser@server:/serverdir /localdir/140602
(den Parameter v kann man auch weglassen, vielleicht sogar R)

d33eniz
Beiträge: 9
Registriert: 27.05.2014 10:14:26

Re: Automatisierte Websiten-Backups

Beitrag von d33eniz » 03.06.2014 10:57:19

Zunächst, die FTP Backups laufen schonmal, nur mit 2 Dingen, die ich nennen sollte:
1. Emails können anscheinend nicht an "remote" Orte verschickt werden
2. Irgendwas stimmt an der Zeile

Code: Alles auswählen

#alte Daten suchen und löschen
find /mnt/NAS/Backups/Kunde1 -type d -mtime +365d
nicht. Ich habe das "d" am Ende entfernt und damit müssten es ja 365*24 Stunden, ungefähr ein Jahr sein, oder?

Außerdem erfordert deine Methode mit rsync, dass man gleichzeitig auch einen Shell Zugang hat, was bei diesem Kunden nicht der Fall war, sodass rsync auch auf dem Gerät läuft. Das geht aber so nicht.

uname
Beiträge: 12403
Registriert: 03.06.2008 09:33:02

Re: Automatisierte Websiten-Backups

Beitrag von uname » 03.06.2014 13:38:47

Mit den find-Parametern kenne ich mich auch nicht aus. Auch weiß ich nicht ob das Datum auch immer korrekt angepasst wird. Tendentiell eher gefährlich würde ich sagen.
Um "rsync-über-ssh" ausführen zu können braucht man nicht notwendigerweise eine "echte" Shell. Man kann z.B. wenn es der Provider unterstützt auch nur SSH-Keys in ~/.ssh/authorized_keys2 mit einem Befehl (command ="...") erlauben.

Antworten