staging.inyokaproject.org

Automatisches Backup beim Shutdown

Status: Ungelöst | Ubuntu-Version: Kubuntu 10.04 (Lucid Lynx)
Antworten |

sinai

Anmeldungsdatum:
29. Januar 2009

Beiträge: Zähle...

Hallo

Evtl. hat hier jemand eine Ahnung: Bisher habe ich mit Ubuntu 9.04 mein backupscript nach /etc/init.d/ gelegt und in /etc/rc0.d/ einen Link mit S01backup auf das Script angelegt.

Damit wurde das Script beim Herunterfahren ausgeführt und ich hatte mein Backup auf dem Fileserver.

Mit 10.04 klappt das nicht mehr. Das Script wird nicht angerührt - ein Test zusätzlich eine Datei anlegen zu lassen (um zu sehen, ob das Script ausgeführt wird) ist ebenfalls negativ. Somit gehe ich davon aus, dass das Script nicht ausgeführt wird. Wurde mit Upstart auch der Shutdown verändert?

Hat jemand einen Tipp, wie ich mein Script beim Shutdown (nicht Reboot) wieder ausgeführt bekomme?

Danke

Andy

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
andreas@desktop:/etc/rc0.d$ ls -l
insgesamt 4
lrwxrwxrwx 1 root root  23 2010-10-03 22:11 K20hyperestraier -> ../init.d/hyperestraier
lrwxrwxrwx 1 root root  18 2010-10-03 22:11 K20stunnel4 -> ../init.d/stunnel4
lrwxrwxrwx 1 root root  24 2010-10-03 21:59 K20virtualbox-ose -> ../init.d/virtualbox-ose
lrwxrwxrwx 1 root root  19 2010-10-03 21:19 K74bluetooth -> ../init.d/bluetooth
-rw-r--r-- 1 root root 353 2009-09-07 20:58 README
lrwxrwxrwx 1 root root  24 2010-10-22 11:21 S03komplettbackup -> ../init.d/komplettbackup
lrwxrwxrwx 1 root root  29 2010-10-03 21:19 S10unattended-upgrades -> ../init.d/unattended-upgrades
lrwxrwxrwx 1 root root  22 2010-10-03 21:19 S15wpa-ifupdown -> ../init.d/wpa-ifupdown
lrwxrwxrwx 1 root root  18 2010-10-03 21:19 S20sendsigs -> ../init.d/sendsigs
lrwxrwxrwx 1 root root  17 2010-10-03 21:19 S30urandom -> ../init.d/urandom
lrwxrwxrwx 1 root root  22 2010-10-03 21:19 S31umountnfs.sh -> ../init.d/umountnfs.sh
lrwxrwxrwx 1 root root  20 2010-10-03 21:19 S35networking -> ../init.d/networking
lrwxrwxrwx 1 root root  18 2010-10-03 21:19 S40umountfs -> ../init.d/umountfs
lrwxrwxrwx 1 root root  20 2010-10-03 21:19 S60umountroot -> ../init.d/umountroot
lrwxrwxrwx 1 root root  14 2010-10-03 21:19 S90halt -> ../init.d/halt
1
2
andreas@desktop:/etc/init.d$ ls -l komplettbackup 
-rwxr-xr-x 1 root root 2874 2010-03-17 10:51 komplettbackup

theinlein

Anmeldungsdatum:
29. Dezember 2007

Beiträge: Zähle...

Hallo,

hast du den Link manuell selbst angelegt? Das solltest du nicht tun; nimm update-rc.d . Die Up/Down-Geschichten haben sich insoweit verändert, dass sie versuchen auch parallel zu arbeiten. Dadurch kann Einiges beschleunigt werden.

Das hat aber zur Folge, dass auch die Conditions in den Pseudo-Kommentaren Required-Start und Required-Stop volle Bedeutung bekommen und wichtiger, als in der Vergangenheit sind, sonst kommt das System auf die Idee, deinen Dienst zu parallelisieren, was für dein backup dann nicht günstig ist, wenn das System anfängt umounts zu machen.

Obwohl mir damit noch nicht klar ist, warum dein Script überhaupt nicht angestoßen wird, solltest du vielleicht erst noch mal alles mit update-rc durchführen? - falls noch nicht gemacht.

Steht was in den /var/log/ .... Files?

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21668

Zeig bitte auch das script selbst mal her

sinai

(Themenstarter)

Anmeldungsdatum:
29. Januar 2009

Beiträge: 62

Ich habe den Link manuell eingefügt. Update-rc.d - keine Ahnung

In den Logs ist keine Spur vom Aufruf eines Scripts zu finden.

Das Script hatte ich früher per Cron aufgerufen - deswegen die echos - da hatte ich per Mail eine Kontrolle. Aber in rc0.d ist es unter 9.04 viel praktischer gewesen.

Ahhh - oder ist es die Umstellung auf dash???

Andy

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#! /bin/bash
# Synchronisation von Rechner mit Server beim Shutdown
echo --------------------------------------------
echo Start Backupscript
echo --------------------------------------------
date
echo --------------------------------------------
echo
echo  Datensicherung Mails gestartet
rsync -av -C --delete-after /home/andreas/.kde/share/apps/kmail/mail andreas@192.168.2.240:/media/backup/Andreas/ && echo  Datensicherung Mails beendet
echo
echo --------------------------------------------
echo
echo  Datensicherung Daten gestartet
rsync -av -C --delete-after /home/andreas/Daten andreas@192.168.2.240:/media/backup/Andreas/  && echo  Datensicherung Daten beendet
echo

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21668

Und das lief ohne absolute Pfade für rsync und echo ?

sinai

(Themenstarter)

Anmeldungsdatum:
29. Januar 2009

Beiträge: 62

Völlig problemlos - aber wie gesagt mit 9.04.

Kann ja die Befehle mal vollpfadig angeben.

Andy

sinai

(Themenstarter)

Anmeldungsdatum:
29. Januar 2009

Beiträge: 62

Ergebnisse:

Vollpfadig bringt keinen Erfolg, Über update-rc wird das Script ausgeführt, aber das Netzwerk ist wegen der langen Laufzeit (Backupdauer 5 Minuten) irgendwann weg.

Geht da was über Upstart so in der Art?

Folgendes Script als backup.conf nach /etc/init

# Backupscript
start on runlevel 0

pre-start script
# Nichts tun
end script

exec /etc/init.d/backupscript.sh oder
rsync blabla

post-stop script
# Nichts tun
end script

Nur müsste natürlich noch sichergestellt sein, dass eth0 noch aktiv ist.

Kann man dann auch

start on runlevel 0 and net-device-up eth0

angeben, oder wie fragt man das ab, denn ich befürchte, dass Runlevel 0 schneller beendet ist, als mein rsync auf den Fileserver

Oder geht das so garnicht? Fragen über Fragen...

Andy

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21668

Dann bin ich ratlos. Ehrlich gesagt würde ich sowas wichtiges wie ein Backup auch nicht beim Shutdown machen wollen, grade wenn es schiefgeht hast du keine Chance mehr zu reagieren.

sinai

(Themenstarter)

Anmeldungsdatum:
29. Januar 2009

Beiträge: 62

Ich habe immer 5 rotierende Backups - bisher klappte das problemlos und ist bequem und vor Allem:

1. Ich kann es nicht vergessen. 2. Ich habe immer vom aktuellsten Stand ein Backup.

Ich befürchte ja wirklich, dass das parallele Hochfahren ebenso ein paralleles Herunterfahren bedeutet und damit die Scripte in rc0.d nicht wie vorher sequentiell abgearbeitet werden.

Andy

theinlein

Anmeldungsdatum:
29. Dezember 2007

Beiträge: 1279

Hallo,

dein Problem ist doch, dass dein Bäckup parallelisiert abläuft und die Laufzeitbedingungen nicht sichergestellt werden - das Netzwerk wird heruntergefahren.

Wenn du mit dem init-System arbeitest, musst die du Randbedingungen über die Pseudo-Kommentare Required-Start und Required-Stop, Should-Start und Should-Stop sicherstellen.

Du hast dein Backup-Script gepostet, aber wie sieht dein init-Script aus?

Außerdem bin ich etwas verwirrt. Du erzählst was von einem backup.conf in /etc/init ? Wenn du update-rc verwendest bzw. die Links bastelst, ist das für das init-System, nicht für das Upstart. Beides kannst du nicht machen.

sinai

(Themenstarter)

Anmeldungsdatum:
29. Januar 2009

Beiträge: 62

Mir ist klar, dass nur init oder upstart funktioniert.

backup.conf in init existiert auch nicht - ich wollte wissen, ob das eine Möglichkeit ist, mein Problem zu lösen. Habe mich eben noch nicht mit Upstart beschäftigt.

Aktuell (bzw. mit der bisherigen 9.04) rufe ich mein Script per Link direkt aus rc0.d auf. Das klappte Problemlos.

Kannst du mir noch etwas nähere Infos geben?

Trotzdem erstmal vielen Dank

Andy

theinlein

Anmeldungsdatum:
29. Dezember 2007

Beiträge: 1279

Hallo,

genau so ist es auch bei mir. Mit Upstart habe ich es noch nie gemact, kenne es nur vom Lesen. Habe aber auch zum Thema runterfahren, noch keine Idee, wie da die passenden Event-Definition wäre.

So, wie ich dich verstanden habe, hast du nur das Bäckup-Script und das hast du in rc0.d reingelinkt?

Ich kann es aber nur wiederholen:

Du musst doch ein init-Script haben. Dieses init-Script muss gewissen Regeln genügen. Es muss z.B. diese Pseude-Kommentare haben und bestimmte Returnwerte verwenden. Nur weil du in der Vergangenheit irgendwie damit zurecht gekommen bist - weil vergangene init-Versionen großzügiger waren oder bestimmte Randbedingungen bisher keine Rolle gespielt haben. Ich kann mir vorstellen, dass man init irgendwie geändert hat, damit es mit Upstart besser zusammen passt. Es wird ja beides verwendet.

Ich meine, du solltes mal ganz sauber so vorgehen, wie auch hier im wiki beschrieben. ☺

sinai

(Themenstarter)

Anmeldungsdatum:
29. Januar 2009

Beiträge: 62

Vielen Dank erstmal für die Infos. Ich werde mich mal weiter darum bemühen und poste dann wenn möglich hier die Lösung.

Nur sehr merkwürdig, dass noch niemand das so versucht hat. Ist es denn so ungewöhnlich beim Shutdown seine Daten zu sichern?

Andy

theinlein

Anmeldungsdatum:
29. Dezember 2007

Beiträge: 1279

Bitte füge mal am Anfang (vor dem rsync)

touch /tmp/buptest.log
echo "$(date)  $@"  >> /tmp/tmp/buptest.log

und poste mal was passiert

sinai

(Themenstarter)

Anmeldungsdatum:
29. Januar 2009

Beiträge: 62

Du meinst sicher

1
2
touch /tmp/buptest.log
echo "$(date)  $@"  >> /tmp/buptest.log

ohne doppeltes /tmp

andreas@desktop:~$ cat /tmp/buptest.log 
Mo 1. Nov 19:34:53 CET 2010

Und hier die Scripausgabe. Es ist definitiv ein Timingproblem. Netzwerk ist down

--------------------------------------------
Start Backupscript
--------------------------------------------
Mo 1. Nov 19:34:54 CET 2010
--------------------------------------------

Synchronisation von Rechner mit Server beim Shutdown

--------------------------------------------

Datensicherung Mails gestartet
ssh: connect to host 192.168.2.240 port 22: Network is unreachable
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(601) [sender=3.0.7]

--------------------------------------------

Datensicherung Daten gestartet
ssh: connect to host 192.168.2.240 port 22: Network is unreachable
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(601) [sender=3.0.7]

--------------------------------------------

Andy

Antworten |