Python ist zu flott, hab hier mal eine kleine Pause am Ende der Schleife eingebaut, sodass Python bei der Pause beendet werden kann (vorher startete der neue rsync-Prozess zu schnell, der dann anstelle von Python beendet wurde):
Code:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import linecache
import os
import re
import subprocess
import sys, dbus
import time
# Die Dateien und Verzeichnisse, die gesichert werden sollen:
quellen = ['/home/davidlinux/',]
# Zielverzeichnis für Backups:
ziel_verzeichnis = '/etc/dp/'
lastBackup = time.strftime('%Y%m%d')
def shutdown():
bus = dbus.SystemBus()
try:
remote_object = bus.get_object('org.freedesktop.Hal',
'/org/freedesktop/Hal/devices/computer')
props = remote_object.Shutdown(dbus_interface='org.freedesktop.Hal.Device.SystemPowerManagement')
except dbus.exceptions.DBusException, e:
print e
try:
while True:
datei = open ("dp_clienttask.ini","r")
lines = datei.readlines()
for line in lines:
if line.lower().strip().startswith("boottime="):
auswahl=int(re.split('^boottime=([0-9]+)[^0-9]*?$', line.lower().strip())[1])
datei.close()
if auswahl == 4:
outfile=open("dp_clienttask.ini","w+")
for line in open("dp_clienttasktemp.ini"):
line=line.replace ("X","5")
outfile.write(line)
print line
outfile.close()
elif auswahl == 2:
shutdown()
elif auswahl == 3 or auswahl == 5:
print 'Sicherung wird gestartet und unter %s/ gespeichert' % ziel_verzeichnis
print 'Druecken Sie 2Mal STRG + C um die Sicherung abzubrechen'
if auswahl == 5: # inkrementelles Backup durchführen
os.system('rsync -aoAEHX %s --link-dest=%s/%s/ %s/%s/' % (' '.join(quellen), ziel_verzeichnis, lastBackup, ziel_verzeichnis, time.strftime('%Y%m%d')))
else: # Vollbackup durchführen
os.system('rsync -aoAEHX %s %s/%s/' % (' '.join(quellen), ziel_verzeichnis, time.strftime('%Y%m%d')))
lastBackup=time.strftime("%Y%M%D")
while lastBackup == time.strftime('%Y%m%d'):
time.sleep(3600) # eine Stunde schlafen, dann erneut abfragen, was zu tun ist, sofern dich das Datum geändert hat
time.sleep(1)
except KeyboardInterrupt:
print "Beendet."
Shutdown hatte ich auch gerade - kam etwas unerwartet, hätte auch nicht passieren dürfen; ich vermute, dass es an der if __name__ == "__main__"-Struktur liegt, hab die deshalb mal rausgenommen (die Bedingung wird wahr, wenn man das Skript interaktiv ausführt; bin da aber jetzt erst drauf gekommen, dass der Sinn wohl nicht darin bestand, dass das Skript dann den Rechner runterfährt)
Lesezeichen