Webserver Backup - stündlich, täglich und mit Excludes...

T33B33

New Member
Hallo liebe Community.
Habe mich hier mal angemeldet, da ich denke, dass meine Frage hier wohl richtig aufgehoben ist.

Ich habe einen Managed Server bei All-Inkl.com und möchte einzelne Ordner in regelmäßigen Zeitabständen sichern.
Da ich viel auf dem Server programmiere, benötige ich ein (oder zwei) recht flexible Update-Scripts.

Realiserbar wird es wohl letzenendes mit ein oder zwei CGI-Scripts bzw. über n Crownjob, aber davon habe ich kaum bis gar keinen Plan.

Was das 1. Script können muss:
1.0 stündliches Backup eines bestimmten Ordners incl. Unterordner
1.1 bestimmte Dateien / Ordner (z.B. LOG oder tmp) sollen dabei nicht mitgesichert werden... also so ne Art "exclude"...
1.2 nur Dateien bis max. 150 kb sichern
1.3 Bestimmte Dateitypen (z.B. Grafiken) nicht mitsichern
1.4 Ordner muss als Backup-Ordner mit Datum und Uhrzeit abgespeichert werden und darf nicht gepackt sein. (Also "mybackups/backup_yyyy-mm-dd_hh-mm/[meine-Dateien-aber-nicht-gepackt]...")

Was das 2. Script können muss:
2.0 tägliches Backup eines bestimmten Ordners incl. Unterordner
2.1 alle Daten sichern außer Unterordner XYZ
2.2 Ordner muss als Backup-Ordner mit Datum und Uhrzeit abgespeichert werden und sollte vorzugsweise gepackt sein. (Also "mybackups/fullbackup_yyyy-mm-dd_hh-mm.zip" oder so ähnlich... )
2.3 KEIN INCREMENTELLES BACKUP! (Bei 20-30 MB kann ich auf ein incrementelles Backup verzichten.

3. Script (wäre nicht schlecht, kann aber auch im 2. Script mit drin sein)
3.0 Backup der 3 MY-SQL Datenbanken (je 5MB)
(vielleicht mit MySQLDumper??)

WICHTIG:
Auf Spielereien wie eMail Benachrichtigung usw. kann ich gut und gerne verzichten. Dafür hab ich n FTP-Programm und such mir die Daten raus, die ich brache, falls ich auf ein Backup zurückgreifen will.
Wichtiger wäre ein einfach anzupassendes Script!
Parameter wie "Quellordner", "MaxFilesizeOfSourceFiles", "ExcludeFiles", "ExcludDir" sind wichtig, da sich diese häufiger mal ändern und regelmäßig von mir angepasst werden.

Hintergrund:
1. das Backup selbst (brauche ich wohl kaum weiter erläutern)
2. Flexibilität beim Programmieren / entwickeln:
Wie schon häufig passiert, probiert man ab und an vieles aus um ein Problem zu lösen und baut auf dem Weg neue Fehler in bereits fertige und fehlerfreie Routinen ein. Dann hilft meist ein altes Backup mit einer funktionierenden Version weiter, und dann schrittweise vorgehen, bis man alle Fehler raus hat.
Dafür benötige ich das stündliche Backup eines bestimmten Ordners
Bei guter Struktur des Backups sind das 2-3 MB pro Stunde, die gesichert werden. 3*24*7 = 500 MB pro Woche... Damit lässt es sich leben, solange ich an einem bestimmten Projekt programmiere.
Das Script sollte man deaktivieren können (nen Crownjob über ALL-INKL ist ganz einfach über das KAS-Center mit einem klick deaktivierbar)

PS: Die Suche(n) im WWW und hier im Board konnten mir nicht weiterhelfen, da meine Anforderungen wohl recht speziell sind und ich leider kein Plan von CGI und Pearl usw. habe.
Habe damals nur mal 'n PHP-Script über n Crownjob ausführen lassen.

So... Bin mal gespannt, ob sich hier jemand damit auskennt und mir vielleicht den einen oder anderen Tip geben kann.

LG,
Tobi
 

jevermeister

New Member
Wie war jetzt gleich noch die Frage?

Das lässt sich alles mit den handelsüblichen UNIX-Bordmitteln lösen.
Deine Aussage bezüglich "PHP-Crownjobs" und CGI-Scripts lässt mich aber vermuten, dass du das mit deinem aktuellen Kenntnisstand alleine nicht schaffst. Aber mit einem vernünftigen Angebot findest du sicher hier Leute, die dir genau deine Wünsche erfüllen.
 
Last edited by a moderator:

d4f

Kaffee? Wo?
Beim Stichwort "Programmierung" und Backups drängt sich mir spontan Versionsverwaltung auf.
Nicht nur dass du jede erdenkliche Änderungen rückgängig machen oder portieren kannst, sondern es ermöglicht viele weitere Funktionen wie automatische Builds usw...
Vorteilhaft wäre dann auch dass du die direkte Serververbindung loswerden kannst und an lokalen Dateien arbeitest welche dann auf den Server commited werden.
Eine rudimentäre Version der Versionierung wäre Dropbox mit 30 Tage Historie, und da man es auf einen Ordner mounten/syncen kann...
 

T33B33

New Member
Wow... Das geht ja richtig fix hier im Forum... ;-)

Beim Stichwort "Programmierung" und Backups drängt sich mir spontan Versionsverwaltung auf.
Nicht nur dass du jede erdenkliche Änderungen rückgängig machen oder portieren kannst, sondern es ermöglicht viele weitere Funktionen wie automatische Builds usw...
Vorteilhaft wäre dann auch dass du die direkte Serververbindung loswerden kannst und an lokalen Dateien arbeitest welche dann auf den Server commited werden. Eine rudimentäre Version der Versionierung wäre Dropbox mit 30 Tage Historie, und da man es auf einen Ordner mounten/syncen kann...
Da kommt mir der Begriff SVN usw. in den Kopf... Bin da aber echt noch n Noob auf dem Gebiet...
Ist sicherlich ne nette Überlegung, aber weiß nicht, ob das unbedingt alles nötig ist. Kommt auf den Aufwand drauf an... Muss einfach zu konfigurieren sein und sollte nicht allzusehr aufgebläht werden. Habe bei dem Gedanken ein wenig Sorge darum, dass das ganze zu kompliziert werden könnte.
Ich denke mir reicht n Script was n einfaches Backup macht. Beim Fehler - kurz überlegen, wann es das letzte mal richtig funktioniert hat, einzelnes (PHP)File auf meinen PC ziehen, testen und wenns funktioniert - Fehler finden und beseitigen... Fürs erste denke würde ich diese Lösung bevorzugen.
Geht aktuell um Templateentwicklungen und individuelle Erweiterungen für Onlineshops. Da brauch ich was flexibles was unkompliziert am besten per config-Datei recht schnell angepasst werden kann. Ein Backend oder Userinterface stört mich bei sowas meist nur.

Das lässt sich alles mit den handelsüblichen UNIX-Bordmitteln lösen.
Deine Aussage bezüglich "PHP-Crownjobs" und CGI-Scripts lässt mich aber vermuten, dass du das mit deinem aktuellen Kenntnisstand alleine nicht schaffst. Aber mit einem vernünftigen Angebot findest du sicher hier Leute, die dir genau deine Wünsche erfüllen.
Das ist das Problem... In Sachen PHP, mySQL, VB, Javascript usw. bin ich fit und komme recht gut allein zurecht, aber bei CGI und Perl Scripts usw. bin ich ehrlich gesagt am Ende.
Ein fertiges Script zu lesen und ne Config anzupassen bekomm ich wohl noch einigermaßen hin, aber selber eins zu entwickeln bzw. anzupassen... No Way...

z.B.
Code:
#!/bin/bash
FILENAME=GEWÜNSCHTER-NAME
ftp -n <<EOFTP
open SERVER.XX
user USER PASSWORT
put $FILENAME
quit
EOFTP

<-- lesen und verstehen ja - aber das wars dann auch schon...
 
Last edited by a moderator:

TerraX

Active Member
...Ich denke mir reicht n Script was n einfaches Backup macht. Beim Fehler - kurz überlegen, wann es das letzte mal richtig funktioniert hat, einzelnes (PHP)File auf meinen PC ziehen, testen und wenns funktioniert - Fehler finden und beseitigen... Fürs erste denke würde ich diese Lösung bevorzugen.
Geht aktuell um Templateentwicklungen und individuelle Erweiterungen für Onlineshops. Da brauch ich was flexibles was unkompliziert am besten per config-Datei recht schnell angepasst werden kann. Ein Backend oder Userinterface stört mich bei sowas meist nur....
Hmm, du bist ein bisschen sehr stark auf Deine Idee fixiert. Aber um uns gegenseitig beim vollständigen Sachstand abzuholen, braucht es m.E. noch ein paar Infos.

a) Als was benutzt Du den managed Server? Ist das ein abgeschottetes Test-/Demo-System? Oder laufen da Kundenprojekte, die von Dir betreut werden? Welche Entwicklungsumgebung nutzt Du lokal?

b) Welchen Zugriff hast Du auf den managed Server? Wird der mit einem Admin-Panel a la Plesk verwaltet?

Bzgl. Deines Backup-Scriptes Part 2 - man muss das Rad nicht unbedingt neu erfinden. Ich verweise mal auf 2 mögliche Optionen:


http://wiki.hetzner.de/index.php/Tartarus_Backup-Konfiguration
 

fdasasdf

New Member
Da kommt mir der Begriff SVN usw. in den Kopf... Bin da aber echt noch n Noob auf dem Gebiet...
Ist sicherlich ne nette Überlegung, aber weiß nicht, ob das unbedingt alles nötig ist. Kommt auf den Aufwand drauf an... Muss einfach zu konfigurieren sein und sollte nicht allzusehr aufgebläht werden.

Schau Dir mal GIT an. Für einen einzelnen Benutzer, der nur ein paar Dateien versionskontrollieren will, ist das - inklusive Einrichtung - unwesentlich komplizierter als ein mkdir/cp-Befehl. Kann aber mitwachsen, nach Bedarf.

Und auch anfangs kleine Scripte wachsen schneller als gedacht und gewollt und man will doch schnell mal nachschauen, wo die Änderungen liegen.
 

T33B33

New Member
a) Als was benutzt Du den managed Server? Ist das ein abgeschottetes Test-/Demo-System? Oder laufen da Kundenprojekte, die von Dir betreut werden? Welche Entwicklungsumgebung nutzt Du lokal?

Ist zur Zeit alles noch nicht öffentlich. Den Anfang hab ich mit XAMPP unter WinXP gemacht, mittlerweile ist es auf dem Server / Webspace.
Die Projekte sind unterschiedlich und später muss das Script auch im Echteinsatz arbeiten.
Die stündlichen Backups aktiviere ich dann auch nur, wenn ich aktiv an den Projekten arbeite. Nach 1-2 Wochen deaktiviere ich das Script einfach wieder.

Die täglichen Komplettbackups sollen bleiben. Um den Speicherplatzverbrauch kümmere ich mich selber. Der wird alle 1-2 Monate von mir per Hand gesichert oder bereinigt.

b) Welchen Zugriff hast Du auf den managed Server? Wird der mit einem Admin-Panel a la Plesk verwaltet?

Plesk sagt mir jetzt nichts... Bei All-Inkl ist das wohl der KASSERVER bzw. KAS-Login. Darüber kann man alles mögliche machen (FTP Accounts, DB Accounts, Crownjobs, Mailadressen usw. verwalten)

Bzgl. Deines Backup-Scriptes Part 2 - man muss das Rad nicht unbedingt neu erfinden. Ich verweise mal auf 2 mögliche Optionen:


http://wiki.hetzner.de/index.php/Tartarus_Backup-Konfiguration
Habe mir schon vieles angeschaut, aber ich bin da einfach nicht fit. Das ist mir einfach zu viel bzw. zu kompliziert. Ich brauche diese Dinge nur zum erstellen eines bzw. zweier Scripte. Dafür Wochenlang zu investieren und sich rein zu lesen war nicht unbedingt mein Ziel.
Dachte eigentlich es gibt eine recht einfache Möglichkeit wie z.B. ne Batch-Datei im Linux-Style mit ein paar Parametern.

Also als Beispiel:
Code:
[SETTINGS_specialCopy]
MaxFileSize=1024*1024*2    // 2MB
ExcludeDir="/webshop/tmp", "/webshop/tmp", "/webshop/logs", "/webshop/images_tmp"
IncludeFileTypes=*.*
ExcludeFileTypes=*.zip,*.rar

[SCRIPT]
$sourceDir = [documentroot] . "/webshop";
$destinationDir = [documentroot] . "/myBackups/" . datetime('YYY-mm-dd_HH-MM') . "_BackupWebshop";
mkdir($backupdir);
specialCopy($sourceDir, $destinationDir);

Dann das ganze als Crownjob konfigurieren und gut is.
(siehe Screenshot)

Das wären 4 Parameter und (wenn man die Variablen mal weglässt) zwei Befehle die ich theoretisch benötige. :)

Und beim Tagesbackup sollte das ganze vielleicht noch als zip gepackt werden, was wohl das kleinste Problem sein sollte.

UPDATE:
Na da hat jemand meine Idee schon so gut wie umgesetzt... Nu muss mir nur noch jemand nen Tip geben, als was man das abspeichert oder wie man das einbindet....
http://ubuntuforums.org/showthread.php?t=1772516
 

Attachments

  • crownjob_screenshot.jpg
    crownjob_screenshot.jpg
    106.3 KB · Views: 285
Last edited by a moderator:

T33B33

New Member
geht doch...

Wer suchet der findet...

Variante 1:
Datei: root/backup/backupscript.php anlegen mit folgendem Inhalt und dann einfach ausführen...
Ist 'n Zweizeiler ohne großen Schnickschnack und Zusatzprogrammen usw. geworden :)
Code:
$phar = new PharData('backup' . date("Y-m-d_H-i") . '.zip');
if ($phar->buildFromDirectory('../testshop1/')) echo "Backup erstellt" else echo "Backup fehlerhaft";

Da müssen zwar noch die Excludes mit rein, aber das bekomme ich auch noch raus.
Vorteil: Benötigt kein exec...

Variante 2:
Oder ein Einzeiler:
Code:
exec('pktar --exclude={"*.tar.gz","*.sql.gz","excludeBackupDir1","excludeBackupDir2"} -czf Testbackup-' . date("Ymd_H_i_s"). '.tar.gz ../testshop1');
echo "Backup wurde erstellt!";

Variante 3:
Über PEAR / Archive_Tar (einfach mal googlen...)
 
Last edited by a moderator:
Top