Skript bricht ab … aber halbwegs arbeitet es weiter

ffmusik

Mitglied
Thread Starter
Dabei seit
23.01.2004
Beiträge
30
Reaktionspunkte
0
Ich brauche Hilfe bei einem BackUp Skript.

Ich habe es vor etlicher Zeit aus einer Vorlage für mich so modifiziert, dass es wunderbar funktioniert, sogar in einem internen Netzwerk.

Jetzt wollte ich es auch auf einem anderen Rechner (iMac) verwenden und habe es umgeschrieben … es arbeitet auch im Grunde richtig … aber ganz zum Schluß bringt es eine Fehlermeldung und arbeitet dann weiter, wenn man die vorhandene OK-Taste gedrückt hat, allerdings fehlt dann der allerletzte Teil.

Aber am besten stelle ich das Skript einmal hier vor. Es bringt den iMac dazu, einen bestimmten Ordner auf dem Schreibtisch zu komprimieren, ihm einen bestimmten Namen mit dem aktuellen Datum zu geben, die entstandene gepackte Datei in einen Datensicherungs-Ordner zu kopieren und das Original auf dem Schreibtisch wieder zu löschen. Das funktioniert alles, nur wenn die 4,88 GB große komprimierte Datei in den Datensicherungs-Ordner verschoben wird, erhält man immer bei ca. 3 GB (auch mal bei 2,94 GB) eine Fehlermeldung, die im Skript bei Fehlern auch so vorgesehen ist. Wenn man dann auf die vorhandene OK-Taste klickt, verschwindet die Fehlermeldung, die datei wird zu Ende kopiert und erscheint im Datensicherungs-Ordner grau mit einer geringen Größenangabe. Wenn man den Ordner dann schliesst und wieder öffnet, sieht man, dass die ganze Datei richtig verschoben wurde. Der letzte Teil des Skripts, das Löschen der Datei auf dem Schreibtisch, findet dann nicht mehr statt. Ich selbst kann ja alles manuell, aber das Skript ist ja für Benutzer, die nicht genau wissen, was da passiert.

Hier ist das Skript:

--------------------------- Anfang Skript ------------------------------

-- Set basic variables for the work folder and the backup disk.
tell application "Finder"
set theFolder to folder "Folder a" of folder "Folder B" of folder "Desktop" of folder "xyz" of folder "Users" of startup disk
-- set this to the real location of your work folder.
set theBackupDisk to folder "Datensicherung" of disk "Datensicherung Mac" -- change this to the location of your backup disk.
end tell

-- Generate a date in the format dd.mm.yy If you like your date differently, change this.
set backupDate to (day of (current date)) + 100 as string
set backupDate to characters 2 thru 3 of backupDate
set backupDate to backupDate as string
set tempVar to (month of (current date)) + 100 as string
set tempVar to characters 2 thru 3 of tempVar
set backupDate to backupDate & "." & tempVar as string
set tempVar to (year of (current date)) as string
set tempVar to characters 3 thru 4 of tempVar
set backupDate to backupDate & "." & tempVar as string

-- Prepare variables for the location of the folder to be backed up and the name of the resulting backup.
tell application "Finder"
set theBackUpFile to name of theFolder & " Backup " & backupDate & ".zip"
set theFolder to theFolder as string
end tell

-- Create the unix path to your work folder. This is needed for the shell script.
set theUnixPath to POSIX path of theFolder

-- Archive the work folder, creating a backup file on the desktop.
do shell script "cd ~/Desktop/; zip -r \"" & theBackUpFile & "\" \"" & theUnixPath & "\""

-- Point theBackupFile to the new file.
tell application "Finder"
set theBackUpFile to theBackUpFile
set theBackUpFile to file theBackUpFile of desktop
end tell

delay 1 -- This is needed to give the Finder some time to realise there is a backup file.

-- Here the backup is copied to the backup disk, and deleted on the desktop. If there is already an item with the backup name and date on the backup disk, nothing is copied and the archived folder remains on the desktop.
tell application "Finder"
try
move theBackUpFile to theBackupDisk
delete theBackUpFile

on error
-- If something goes wrong, warn and exit.
activate
display alert "Datensicherung abgebrochen" message "Es gab den Ordner \"" & ((name of theBackUpFile) as string) & "\" entweder bereits auf der Sicherungsfestplatte oder etwas anderes ging schief. Es wurde nichts kopiert und gesichert." as warning
end try
end tell

--------------------------- Ende Skript ------------------------------

Der Fehler passiert bei "move theBackUpFile to theBackupDisk", die Warnmeldung, die erscheint, ist die oben nach "display alert" angegebene. "delete theBackUpFile" wird nicht mehr ausgeführt.

Es dauert alles ziemlich lange, aber auf einem anderen Rechner läuft eine etwas andere Version seit Jahren tadellos! Kann es daran liegen, dass das Kopieren so lange dauert, dass das Skript schon zu früh im Datensicherungsordner nachschaut, dort die halb kopierte Datei mit dem "richtigen" Namen bereits vorfindet und deshalb die Meldung schickt?

Wer kann mir hier helfen? Wenn jemand übrigens dies Skript für eigene Lösungen verwenden möchte, ist das kein Problem, ich hab mir ja auch die Vorlage irgendwo geholt.

Bin gespannt auf Eure Reaktion!

ffmusik
 
Ich hab das mal nachvollzogen - das Script als solches funktioniert.
Hat also vermutlich schon mit der Dateigrösse zu tun.
Wie ist die externe Festplatte formatiert?

Grundsätzlich frage ich mich aber, wie sinnvoll diese ganze Aktion so ist?
Du zippst eine ~5GB-Datei erst auf den Desktop, um sie dann auf die Externe zu kopieren und dann wieder vom Desktop zu löschen (bzw. in den Papierkorb zu befördern, der dann noch geleert werden muss).
Wäre es da nicht schlauer, die Datei direkt auf die Externe zu zippen, ohne den Umweg über den Desktop?

Und willst Du im Backup-Zip wirklich all die leeren Unterordner gem. Pfad mit drin?

attachment.php




Ich würde das Ganze in etwa so lösen:
Code:
[COLOR=#5e6161]-- Pfade:[/COLOR]
[B]set[/B] [COLOR=#478f29]theFolder[/COLOR] [B]to[/B] "Folder a"
[B]set[/B] [COLOR=#478f29]thePath[/COLOR] [B]to[/B] "/Users/xyz/Desktop/Folder B/"
[B]set[/B] [COLOR=#478f29]theBackupLocation[/COLOR] [B]to[/B] "/Volumes/Datensicherung Mac/Datensicherung/"

[B]set[/B] [COLOR=#478f29]Datum[/COLOR] [B]to[/B] [COLOR=#0f33b7][B]do shell script[/B][/COLOR] "date \"+%d.%m.%y\""
[COLOR=#478f29][COLOR=#000000][B]set[/B] [/COLOR]theBackupPath[COLOR=#000000] [B]to[/B] [/COLOR]theBackupLocation[COLOR=#000000] & [/COLOR]theFolder[COLOR=#000000] & " Backup " & [/COLOR]Datum[COLOR=#000000] & ".zip"
[/COLOR][/COLOR]
[COLOR=#478f29][COLOR=#000000][B]set[/B] [/COLOR]theUnixPath[COLOR=#000000] [B]to[/B] [/COLOR][COLOR=#8633d4]quoted form[/COLOR][COLOR=#000000] [B]of[/B] [/COLOR]thePath[/COLOR]
[COLOR=#478f29][COLOR=#000000][B]set[/B] [/COLOR]theUnixDest[COLOR=#000000] [B]to[/B] [/COLOR][COLOR=#8633d4]quoted form[/COLOR][COLOR=#000000] [B]of[/B] [/COLOR]theBackupPath[/COLOR]
[COLOR=#478f29][COLOR=#000000][B]set[/B] [/COLOR]theUnixFolder[COLOR=#000000] [B]to[/B] [/COLOR][COLOR=#8633d4]quoted form[/COLOR][COLOR=#000000] [B]of[/B] [/COLOR]theFolder[/COLOR]

[B]try[/B]
    [COLOR=#0f33b7][B]do shell script[/B][/COLOR] "cd " & [COLOR=#478f29]theUnixPath[/COLOR] & "; zip -r " & [COLOR=#478f29]theUnixDest[/COLOR] & " " & [COLOR=#478f29]theUnixFolder[/COLOR]
[B]on[/B] [B]error[/B]
    [COLOR=#0f33b7][B]display alert[/B][/COLOR] "etwas ging schief" [COLOR=#0f33b7]as[/COLOR] [COLOR=#351f61]warning[/COLOR]
[B]end[/B] [B]try[/B]
 

Anhänge

  • AS-bak.png
    AS-bak.png
    19,5 KB · Aufrufe: 135
hmm, da nimmt man sich Zeit zu helfen, das Script zu analysieren, schreibt sogar eine verbesserte Version, stellt Rückfragen, etc. und dann kommt da tagelang nichts mehr
Schade eigentlich... :(
 
baue zwischen dem kopieren und dem loeschen mal eine pause von ca.5 sekunden ein. Hatte so ein fall letztens bei einem shell script. Erst ein "sync" und ein sleep 5 loesten das Problem. War wohl so, dass die Daten noch im Cache des Rechners wahren, d.h. nicht wirklich geschrieben und "zu frueh" geloescht wurden.
 
Bin gespannt auf Eure Reaktion!
Ich auch... vor allem darauf, ob da irgendwann noch was kommt von Dir... :rolleyes:

Beitrag erstellt: 30.10.2014, 17:32
Letzte Aktivität: 30.10.2014 17:44

Wie kann man hier eine - doch recht umfassende - Anfrage stellen, und dann über 3 Wochen nicht mehr vorbei schauen? :confused:

Ich werd's wohl nie verstehen... :(
 
Zurück
Oben Unten