Automatisches Sichern
Es gab unter Automatisches Sichern (alt) eine Diskussion zu diesem Thema.
Aufgrund einer Supportanfrage habe ich mir das angeschaut und ein aktuelles AppleScript geschrieben, dass diese Funktionalität für RagTime 6.6 unterstützt.
Update 29. Jun 2018:
Ich habe nun das Skript überarbeitet, da sich gezeigt hat, dass die ursprüngliche Version beim arbeiten mit mehreren Dokumenten nicht gut funktioniert.
Dieses Skript arbeitet nun so, dass alle geöffneten Dokumente geprüft und gesichert werden. Dabei wird eine modifizierte Datei einfach nur gespeichert und beim 10. mal ("saveCopy" im Skript) wird eine Kopie im Backup-Ordner ("backupPath" im Skript) angelegt. Dabei wie der Namen durch einen Zeitstempel ergänzt. Falls nur Kopien gesichert werden sollen, kann man "saveCopy" auf 1 setzen.
Anmerkung: Ältere Backup-Dateien werden nicht gelöscht. Daher sollte der Backup-Ordner regelmäßig geprüft werden.
Update 26. Mai 2020:
Ab RagTime 6.6.6 werden die alten Pfade in der Form "Macintosh HD:backups:" nicht mehr unterstützt!
Somit muss immer ein UNIX Pfad verwendet werden. Dadurch ergibt sich folgende Änderung im unten stehenden Skript
-- ************************************************************ **** -- ENTER YOUR BACKUP PATH HERE property backupPath : "/Volumes/Macintosh HD/backups/" as string -- ****************************** ****************************** ****
Ich werde das Skript nicht ändern, damit es auch noch in älteren RagTime Versionen funktioniert.
Der Pfad muss immer mit einem "/" enden!
(* AutoSave App for RagTime 6.6 English: This script must be saved in "Script Editor" as "Application" and the option "Stay open after run handler" must be enabled. Deutsch: Dieses Skript muss im "Skript-Editor" als "Programm" gesichert werden. Die Option "Nach run-Handler anzeigen" muss eingeschaltet sein *) property saveTime : 300 -- number of seconds between executing a save property saveCopy : 10 -- each "saveCopy" times save a duplicate, else just save the file property saveCounter : 0 -- ************************************************************ **** -- ENTER YOUR BACKUP PATH HERE -- Use either then old colon based path or the UNIX path as shown below -- a "/" at the end of a POSIX path is needed (at least on OS X 10.7) -- property backupPath : "Macintosh HD:backups:" -- property backupPath : POSIX file "/Volumes/Macintosh HD/backups/" as string property backupPath : POSIX file "/Volumes/Macintosh HD/backups/" as string -- ****************************** ****************************** **** -- get a "file name friendly" timestring without a colon on dateStamp() set cd to current date set ds to year of cd as string set ds to ds & "-" & ((month of cd as number) as string) set ds to ds & "-" & ((day of cd as number) as string) set AppleScript's text item delimiters to {":"} set ts to every text item of time string of cd set AppleScript's text item delimiters to {""} set ds to ds & "-" & ts return ds end dateStamp -- build a new file name by appending date time on getSaveName(orgName) set fName to orgName set fLen to count fName if text (fLen - 3) thru fLen of fName is ".rtd" then set fName to text 1 thru (fLen - 4) of fName return fName & "-" & dateStamp() & ".rtd" end getSaveName -- the idle handler is called each time after "idle time" on idle try tell application "System Events" to set RTinFront to (frontmost of (process 1 whose bundle identifier is "de.ragtime.ragtime")) on error -- RagTime is not open return saveTime end try if RTinFront then set docCounter to 1 set incSaveCount to true -- make sure that the counter is just increased once even if several files are saved repeat try tell application "RagTime 6.6" to set docName to name of document docCounter on error -- there is no other open document return saveTime end try set saveName to getSaveName(docName) tell application "RagTime 6.6" to tell document docName to set isModified to modified if isModified then if incSaveCount then set saveCounter to saveCounter + 1 set incSaveCount to false end if if 0 = saveCounter mod saveCopy then tell application "RagTime 6.6" to save document docName in file (backupPath & saveName) with save a copy behavior else tell application "RagTime 6.6" to tell document docName to save end if end if set docCounter to docCounter + 1 end repeat end if -- If an idle handler returns a positive number, that number becomes the rate (in seconds) -- at which the handler is called. If the handler returns a non-numeric value, the rate -- is not changed. You can return 0 to maintain the default delay of 30 seconds. return saveTime end idle
Für Feedback oder Verbesserungsvorschläge wäre ich dankbar.
Thomas Eckert
RagTime Support