Da könnte man einmalig einen tar-Update-Befehl absetzen:
Damit werden nur Dateien angehängt, die im Archiv nicht existieren.Code:tar -rvzf <letztes Archiv> <dateiliste>
Da könnte man einmalig einen tar-Update-Befehl absetzen:
Damit werden nur Dateien angehängt, die im Archiv nicht existieren.Code:tar -rvzf <letztes Archiv> <dateiliste>
hm gute idee aber letztes archiv woher weis ich welches das war bzw wo soll ich den befehl inkopieren ins sicherungsskript unter dem os.system oder?
Einfach in die Shell eintippen. Die zuletzt bearbeitete Datei kannst du dir mit folgendem Befehl anzeigen lassen:
Das im Sicherungsverzeichnis ausführen, dann solltest du das letzte Archiv haben.Code:ls -1t | head -n1
Eig. solltest du das aber auch über den Dateinamen machen können!
naja der chef will mal wieda ne geschriebene "funktion" im skript .__. ich mit meinen 21 jahren verzweifel noch mit dem hoffentlich is das Projekt bald zu ende .....
ich werd jetz erstmal feierabend für heut machn vielen dank John das du dir so viel zeit für mich Neuling nimmst. Hoff ich vergraul dich net +grins+
auch an die anderen vielen dank schönen Feierabend noch
lg bluecrystal21
Jetzt mal etwas Code-"Reuse":
Damit wissen wir, dass das Backupskript im Verzeichnis /etc/dp/Backup nach Name sortiert an letzter Stelle steht.Code:quellen = ['/home/davidlinux/DP',] ziel_verzeichnis = '/etc/dp/Backup' heute = ziel_verzeichnis + time.strftime('%Y%m%d')
Dann kann man das so machen:
Code:quellen = ['/home/davidlinux/DP',] listing=os.listdir('/etc/dp/Backup') listing.sort() ziel = heute + os.sep + jetzt + '.tar' tar_befehl = 'tar -rzf %s %s' % (listing[-1], ' '.join(quellen)) os.system(tar_befehl)
python dp_cron.py
Sicherung wird gestartet
Sicherung wird gestartet und unter /etc/dp/ gespeichert
Druecken Sie 2Mal STRG + C um die Sicherung abzubrechen
Traceback (most recent call last):
File "dp_cron.py", line 14, in <module>
execfile('/mnt/Freigaben/00-16-17-15-56-61/dp_client.py')
File "/mnt/Freigaben/00-16-17-15-56-61/dp_client.py", line 35, in <module>
listing=os.listdir('/etc/dp/Backup')
OSError: [Errno 2] No such file or directory: '/etc/dp/Backup'
kommt wenn ich dp_cron.py ausführ die Datei dp_cron.py zeig ich dir hier moment.
hab jetz nur das datum="23" geändert um es heute zu testen ^^Code:#!/bin/bash #!/bin/sh #! /usr/bin/env python import time import os from time import * lt = localtime() d1=strftime("%d", lt) datum= '23' if d1 == datum : print 'Sicherung wird gestartet' execfile('/mnt/Freigaben/00-16-17-15-56-61/dp_clienttest.py') else: print 'Fehler'
So nun hab ich bissle gegoogelt und rausgefunden:
Anzumerken ist, dass in einem gepackten Archiv, auch wenn dies durch »tar« selbst komprimiert wurde, keine Dateien hinzugefügt, erneuert oder gelöscht werden können. Dies kann nur im unkomprimierten tar-Archiv geschehen.
also muss ich das archiv Entpacken und dann neu packen und optionen so einstellen das die entpackten Daten gelöscht werden?!
so sieht mein Code derzeit ausCode:#! /usr/bin/env python import linecache import sys, dbus import os import time import subprocess auswahl = 0 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 == 0 : #Die Dateien und Verzeichnisse, die gesichert werden sollen, quellen = ['/home/davidlinux/DP',] ziel_verzeichnis = '/etc/dp/Backup' heute = ziel_verzeichnis + time.strftime('%Y%m%d') jetzt = time.strftime('%H%M%S') print 'Sicherung wird gestartet und unter /etc/dp/ gespeichert' print 'Druecken Sie 2Mal STRG + C um die Sicherung abzubrechen' #Erzeuge Ordner wenn dieser noch nicht Existiert mit heutigem Datum: if not os.path.exists(heute): os.mkdir(heute) # erzeuge das Verzeichnis print 'Verzeichnis' , heute, 'erfolgreich angelegt' # Der Name der Tar-Datei: ziel = heute + os.sep + jetzt + '.tar' tar_befehl = 'tar -czf %s %s' % (ziel, ' '.join(quellen)) os.system(tar_befehl) quellen = ['/home/davidlinux/DP',] listing=os.listdir('/etc/dp/') listing.sort() ziel = heute + os.sep + jetzt + '.tar' tar_befehle = 'tar -xf %s %s' % (ziel, ' '.join(quellen)) tar_befehl = 'tar -uzf %s %s' % (listing[-1], ' '.join(quellen)) os.system(tar_befehle) os.system(tar_befehl) # Sicherung starten try: while True: exitstatus=os.system(tar_befehl) if exitstatus == 0: print 'Erfolgreiche Sicherung nach "%s"' % ziel else: print 'Sicherung fehlgeschlagen! (Statuscode: %d)' % exitstatus ans=raw_input("Aktion wird abgebrochen! (Bitte Druecken Sie Enter!): ").lower print 'Sicherung abgebrochen' break except KeyboardInterrupt: print "Sicherung beendet" elif auswahl == 2 : 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 if __name__ == "__main__": shutdown()
problemchen gelöst
Code:# Der Name der Tar-Datei: ziel = heute + os.sep + jetzt + '.tar' tar_befehl = 'tar -czf %s %s' % (ziel, ' '.join(quellen)) os.system(tar_befehl) tar_befehle = 'tar -uf /etc/dp/Backups' os.system(tar_befehle)
man ey ich war so weit es passt schon wieder net... -.-
er will ne Differenzsicherung.
das heisst wenn 25.märz is von 25 märz bis jetz gesichert werden jetz darf ich mein externes skript wieder umbauen hach es is zum verzweifeln.
wie soll man ein datum was irgendson idiot eingibt ne variable machen woher soll das programm wissen wann er letzte sicherung gemacht hat wenn ich n datum von hand eingeb xD.
Hast ne Ahnung wie ich python sag such letzte Sicherung und dann sicher mal nur oben drauf.. ^^
Das war in meinem letzten Code, der Pfad schien allerdings falsch zu sein, daher die Fehlermeldung " OSError: [Errno 2] No such file or directory: '/etc/dp/Backup'"
Wenn du den Pfad anpasst, bekommst du die zuletzt angelegte Sicherung, sofern die Benennung weiterhin dem Schema "<Jahr><Monat><Tag>" folgt.
Das hier ist jetzt das Skript, das Cron ersetzt, dp_cron.py brauchst du nicht mehr (dein Python-Skript müsste noch mehr angepasst werden, damit es Cron ersetzen könnte):
Du solltest deinen Code nochmal deutlich überarbeiten, Konfigurationen (Pfade usw.) nach oben, dann Funktionen die einzelne Jobs ausführen (z.B. buildPath(...), mkBackup(...), mkIncBackup(), ...) und zum Schluss eine Main-Funktion.Code:LAST="" while : do NEWLAST="$(date +%D)" if [ "$NEWLAST" != "$LAST" -a "$(date +%d)" == "01" ] then /home/benutzer/bin/Sicherung.py && LAST="$NEWLAST" && date +"Backup um %d.%m.%Y um %H:%M erfolgreich abgeschlossen." >> /var/log/backup.log fi sleep 1h done
Sieh dich am besten etwas im Forum um, da findest du einige Codes, die nach dem Schema aufgebaut sind.
des Problem is ich brauch für differenzielle Sicherung weil 1h sleep das bringt nix da sichert der wieder un dp_cron.py hab ich einfach so genannt weil mir kein name eingefalln is +grins+ aba nun hab ich den pfad das tar hinbekommen aber das mit dem datum passt einfach net es soll differenziell werdn -.-
egal ich hab kopfweh in 15 mins geh ich heim mir solls egal sein kentucky fried chicken ich komm un futter dich weg -.-
Lesezeichen