PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Backup-Deamon



Mat
12-11-2008, 14:02
Hallo,

ich würde gerne einen Backup-Deamon schreiben der mir ein gewisses verzeichnis täglich zu einer bestimmten Zeit auf einem remote rechner der an einem Netzt hängt wo ich ebenfalls user bin backupt.
Ich bin noch völlig unbewandert im deamon schreiben....ginge das über shell-scripting oder so? Oder gibt es sogar schon fertige skripte?

Danke

lf.de-migo
13-11-2008, 09:06
Ich bin noch völlig unbewandert im deamon schreiben....ginge das über shell-scripting oder so? Oder gibt es sogar schon fertige skripte?
Wenn du's gerne selbst schreiben willst, geht das mit Shellscripting/cron.
Dazu richtest du erstmal eine public-key Authentifizierung auf dem Backuprechner ein, damit du dich dort als dein User ohne Passwort einloggen kannst und erstellst dann einen cronjob, der dir das Verzeichnis per scp auf den Backuprechner kopiert.

Brauchst du eine Versionierung oder reicht dir das einfache Kopieren?

Mat
13-11-2008, 16:59
Danke schonmal für den post. Was genau meinst du mit Versionierung? Meinst du versionierung der backups? Damit dürfte sich ja der Platz ziemlich füllen nach der Zeit wenn ich täglich einen cron-job starten würde...

Das mit dem cron hört sich sehr einfach nach nem 10-Zeiler an (oder so ähnlich)...kann das sein? Gäbe es irgendwo eine einfach anleitung?

danke

lf.de-migo
14-11-2008, 09:08
Danke schonmal für den post. Was genau meinst du mit Versionierung? Meinst du versionierung der backups? Damit dürfte sich ja der Platz ziemlich füllen nach der Zeit wenn ich täglich einen cron-job starten würde...
Ja, meine ich :)
Wenn du das Backup per rsync machst, gibt es allerdings die Möglichkeit, unveränderte Dateien nicht mitkopieren zu lassen sondern nur zu verlinken. Die brauchen somit keinen zusätzlichen Speicherplatz.


Das mit dem cron hört sich sehr einfach nach nem 10-Zeiler an (oder so ähnlich)...kann das sein? Gäbe es irgendwo eine einfach anleitung?
Anelitung braucht's da eigentlich keine; du kannst in cron den gleichen Befehl verwenden, den du auch zum Kopieren per Hand verwenden würdest.

grind
14-11-2008, 11:59
Denke dass sollten mit Sicherheitsabfragen und Löschen alter Versionen nicht mehr als 4-5 Zeilen werden. Einfach in die eigene Crontab und fertig.
SSH-Key-Login mal vorrausgesetzt.

Willst du das Backup selbst entwickeln oder eine Anleitung?

Mat
17-11-2008, 16:48
Danke euch...ich hab schon mal angefangen allerdings funktioniert der cron noch net...bzw. wollte dass er mir per Mailto eine Mail schreibt.....ich muss nochmal bei mehr Zeit drüberschauen...


Willst du das Backup selbst entwickeln oder eine Anleitung?

Was meinst du denn damit? Ich dachte ich mache einfach ein scp -r eines Oberordners ... das jeden Tag. Bzw. eine gezippte/getarte Variante um Platz zu sparen. Unsauber oder unschön sowas?

Blackhawk
18-11-2008, 12:55
Damit uebertraegst du halt jedesmal alle Daten, unabhaengig davon, ob die sich geaendert haben. Schau Dir mal rsync / rsnapshot an...

Mat
20-11-2008, 09:44
Danke,

also iirgendwie geht das mit dem cron bei mir nicht:
Ich dachte cron würde mir täglich unten meine 2 zeilen ausführen und mir
auch gleich eine Mail schreiben...was mache ich falsch?

Ich habe über "crontab -e" versucht meine crontab zu editieren:


SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=user@user.de <- ist meine wahre E-Mailadresse hier natürlich
HOME=/

# check scripts in cron.hourly, cron.daily, cron.weekly and cron.monthly
0 * * * * root rm -f /var/spool/cron/lastrun/cron.hourly
1 3 * * * root rm -f /var/spool/cron/lastrun/cron.daily
15 4 * * 6 root rm -f /var/spool/cron/lastrun/cron.weekly
30 5 1 * * root rm -f /var/spool/cron/lastrun/cron.monthly
*/10 * * * * root test -x /usr/sbin/run-crons && /usr/sbin/run-crons
#
#
25 11 * * 1-5 /usr/local/bin/run-backup
43 10 * * 1-5 mkdir crontest /home/user

jan61
20-11-2008, 18:24
Moin,

da stimmt was nicht. Der obere Teil ist nicht Deine crontab, sondern /etc/crontab - erkennbar am Benutzernamen in Feld 6. Für diese crontab ist Deine Syntax falsch. Mit "crontab -e" müsstest Du aber eigentlich in die eigene crontab (unter /var/spool/cron) geschrieben haben.

Zur letzten Zeile: Wo willst Du denn ein Verzeichnis anlegen???

Jan

Mat
21-11-2008, 09:30
Hmm ich versteh das nicht...
wenn ich über "crontab -e" eine crontab erstelle - bei mir steht dann im vim
plötzlich unten als file: ""/tmp/crontab.XXXX854Jo0"

wenn ich die editiere und abspeichere erscheint die aber nicht im /tmp.
Und auch in /var/spool/cron/ ist da nur unter /var/spool/cron/crontab nur die
datei "root" drin die anscheinend die crontab ist die ich oben bereits gepostet habe.

Wo muss denn eine datei enstehen über crontab -e und wie heißt sie bei euch?

grind
21-11-2008, 10:16
Mit welchem User arbeitest du denn? Wenn du als root eingeloogt bist, ist es klar dass du in der root-crontab landest.
Wenn du die crontab bearbeitest, wird die in /tmp/ "zwischengelagert" und beim speichern in den entsprechenden Ordner verschoben. Bei mir (unter Solaris) ist das /var/spool/cron/crontabs/<username>

afaik darf man die crontab nicht direkt bearbeiten sondern nur über das crontab Kommando. Aber ich bin mir da nichtmehr 100%ig sicher.

Mat
21-11-2008, 11:41
ja als root ja. Aber anders gehts auch nicht. Wenn ich als normaler user
crontab -e eingebe kommt:



cannot chdir(/var/spool/cron), bailing out.
/var/spool/cron: Permission denied


Oder versteh ich was falsch?

jan61
21-11-2008, 18:42
Moin,

das Verzeichnis der crontabs ist normalerweise nur für root lesbar. Das crontab-Kommando hat aber (zumindest bei mir) SETUID-Bit, damit kann es die Dateien nach /var/spool/cron/tabs schreiben. Und auch die crontab für root liegt da, die unter /etc ist die System-crontab. So sieht es bei mir aus:

jan@jack:~/tmp> crontab -e
no crontab for jan - using an empty one
# hier geht vi auf
crontab: installing new crontab
jan@jack:~/tmp> su -
Password:
jack:~ # ls -l /var/spool/cron/tabs/
total 12
drwx------ 2 root root 4096 Nov 21 19:35 .
drwx------ 4 root root 4096 Apr 28 2004 ..
-rw------- 1 root users 221 Nov 21 19:35 jan
jack:~ # ls -l `which crontab`
-rwsr-xr-x 1 root trusted 26992 May 29 2006 /usr/bin/crontab
jack:~ # crontab -e
no crontab for root - using an empty one
# hier geht vi auf
crontab: installing new crontab
jack:~ # ls -l /var/spool/cron/tabs/
total 16
drwx------ 2 root root 4096 Nov 21 19:37 .
drwx------ 4 root root 4096 Apr 28 2004 ..
-rw------- 1 root users 221 Nov 21 19:35 jan
-rw------- 1 root root 220 Nov 21 19:37 root
Jan

Mat
24-11-2008, 09:11
Danke aber bei mir sieht das anders aus: Folgendes wie bei dir gemacht:



user@Gentoo ~ $ crontab -e
cannot chdir(/var/spool/cron), bailing out.
/var/spool/cron: Permission denied
user@Gentoo ~ $ su
Password:
Gentoo user # ls -l /var/spool/cron/crontabs/
total 4
-rw------- 1 root crontab 917 24. Nov 10:05 root
Gentoo user # which crontab
/usr/bin/crontab
Gentoo user # ls -l `which crontab`
-rwxr-s--x 1 root crontab 32172 13. Nov 04:12 /usr/bin/crontab
Gentoo user # crontab -e
crontab: no changes made to crontab
Gentoo user # crontab -e
crontab: installing new crontab
Gentoo user # ls -l /var/spool/cron/crontabs/
total 4
-rw------- 1 root crontab 917 24. Nov 10:08 root
Gentoo user #


also bei mir öffnet sich mit crontab -e wenn ich root bin die crontab die ich in meinem vorigen Post gepostet habe. Und dann wird nix gespeichert unter meinem usernamen <user>.

Wo liegt das Problem?

jan61
24-11-2008, 21:57
Moin,

der Unterschied sind die Berechtigungen auf das crontab-Programm. Es fehlt das SetUID-Bit, dafür ist bei Gentoo das SetGID-Bit gesetzt - der Befehl wird also nicht als "root", dafür mit der Gruppe "crontab" ausgeführt. Offenbar hat diese Gruppe aber keine Berechtigung, im crontabs-Verzeichnis zu schreiben. Scheint mir etwas merkwürdig - wie soll denn dann jemals ein normaler Benutzer cron-Jobs einrichten können? Gibts denn in den Gentoo-Foren dazu keine Hinweise???

Da schlagen wohl Distri-spezifische Eigenarten zu, da kann ich Dir leider nicht helfen (ich weiss schon, warum ich Gentoo nicht mag ;-)

Jan

Ach ja: Wenn Du mal "ls -la /var/spool/cron/crontabs" absetzt, dann kriegst Du auch mit, wie die Verzeichnis-Rechte sitzen.

Mat
26-11-2008, 10:06
hmm..also die ausgabe ist folgendermaßen:



ls -la /var/spool/cron/crontabs/
total 4
drwx-wx--T 2 root crontab 54 24. Nov 10:08 .
drwxr-x--- 4 root cron 70 12. Nov 18:51 ..
-rw-r--r-- 1 root root 0 13. Nov 04:12 .keep_sys-process_vixie-cron-0
-rw------- 1 root crontab 917 24. Nov 10:08 root


ich frag mal im gentoo forum nach...

grind
26-11-2008, 10:56
Ein möglicher workaround wäre vielleicht auch wenn du als root "crontab -e <username>" ausführst. Dann kommst du in die Usercrontab. Eigentlich sollte diese dann auch starten können da hier die Rechte ziehmlich egal sein sollten.

Ist meiner Meinung nach keine Lösung sondern eben nur ein Workaround bis du das Problem gefixt hast.

Gruß
DerGrind