View Single Post
Old 08-29-2005, 07:34 PM
darelon darelon is offline
Registered User
Join Date: Jan 2005
Posts: 11

I used the script below when I still had an abundance of disk space; now I'm down to just one backup and a sandbox. As said before, it's Dave's "Daily Backup" script with some extra lines to use a sequence of backup settings. It 'remembers' the last backup settings used and will cycle through a list of settings you specify in the script.

First and foremost, you'll need to set up SD! with the correct settings for each volume you want to backup to, and save those settings in separate files (see section 6 of the User's Guide for more info on saved settings). Also, you'll need to unlock SD! to be able to run it via AppleScript.

Second, open the Scripteditor application (usually resides in the /Applications/AppleScript folder) and copy+paste the code below into the empty script window.

You'll need to change the values in the "property allBackupSettings : …" line at the top of the script to reflect the names and required order of your saved backup settings. Then save the script as an application bundle without startup dialog wherever you want.

Finally, when you want to execute one of your regular alternating backups, run the Applescript application you just created instead of SD! directly. You can do this manually, or schedule it with e.g. iCal. The script app will determine the next backup settings to be used and start SD! with those settings, and quit SD! when it's done.

(* Rotating Backup - use a cyclic sequence of SuperDuper! backup settings *)

-- allBackupSettings should contain the names of all saved SuperDuper! backup settings to cycle through
-- any external volumes referenced in the saved backup settings used should be mounted before running this script
property allBackupSettings : {"Smart Backup All To Volume 1", "Smart Backup Users To Volume 2", "Smart Backup All to Sparse Image 1", "Smart Backup Users To Sparse Image 2"}

-- backupSettings will retain the name of the backup settings used for the last successfully completed backup
property backupSettings : ""

--  set new backup settings to use, cycling through the list of saved settings
set previousBackupSettings to backupSettings
if backupSettings is "" or backupSettings is last item of allBackupSettings then
	set backupSettings to first item of allBackupSettings
	repeat with i from 1 to (count allBackupSettings)
		if backupSettings is item i of allBackupSettings then
			set backupSettings to item (i + 1) of allBackupSettings
			exit repeat
		end if
	end repeat
end if

-- uncomment these five lines if you always want to manually confirm or select from the backup settings list
set backupSettings to first item of (choose from list allBackupSettings with prompt "Confirm or select backup settings to use:" default items backupSettings without multiple selections allowed and empty selection allowed)
if backupSettings is false then
	set backupSettings to previousBackupSettings
end if

tell application "SuperDuper!"
		--Wait until SuperDuper! is idle before loading and running the desired session
		repeat while status is not idle
			--Sleep # seconds is the best way to "wait" without using the CPU
			tell application "System Events" to do shell script "sleep 5"
		end repeat
		if status is idle then
			--Specify the saved settings as either an absolute path or just the name
			--run using settings "Daily Backup" without user interaction
			run using settings backupSettings without user interaction
		end if
		--Wait until the session is done
		repeat while status is running
			--Sleep # seconds is the best way to "wait" without using the CPU
			tell application "System Events" to do shell script "sleep 5"
		end repeat
	on error errMsg
		-- backup failed, so restore saved backup settings last used
		-- N.B. backup stopped by user is considered successful by SuperDuper! in this context
		set backupSettings to previousBackupSettings
		display dialog errMsg & " See section 12 of the User's Guide for help with this script."
	end try
	--Once done, tell SuperDuper! to quit
end tell
N.B. When SD! encounters an error, the script will not advance to the next backup settings when you start it again -- but note that when you manually stop a running backup, SD! does not see this as an error; this will leave you with an interupted backup *and* the next backup settings would be used when you'd restart the backup via the script. Something to keep in mind. If you want, you can uncomment the lines just before the 'tell application "SuperDuper!"' line to check or change the backup settings that will be used by the script.

Well, that should be it. Let me know if you have any questions or it doesn't quite fit the bill. Of course, all the usual disclaimers apply…

Hope this helps,
Reply With Quote