Shirt Pocket Discussions

Shirt Pocket Discussions (https://www.shirt-pocket.com/forums/index.php)
-   General (https://www.shirt-pocket.com/forums/forumdisplay.php?f=6)
-   -   AppleScript (https://www.shirt-pocket.com/forums/showthread.php?t=2278)

ShosMeister 04-10-2007 07:53 PM

AppleScript
 
Is SuperDuper scriptable? I have been using Retrospect and was thinking of changing over to SuperDuper for it's ease, speed and bootable image options. I had pieced together an AppleScript to run with Retrospect that would log all of the actions as far as volumes, files, dates, times, etc. of the backup and also send out an e-mail if there was an error. Any way to do this with SuperDuper?

Thanks!!!

dnanian 04-10-2007 08:09 PM

It's scriptable, yes. But you can get it to send notifications much more easily: just install Growl and configure the MailMe notification type...

ShosMeister 04-10-2007 08:38 PM

That may be, but, the e-mail is the least of the items. I like to track the backup progress via the database that I've set up. I can see if the backups are taking longer than expected; if the users have added a bunch of "junk" to their machines; that everyone backed up and how much; etc.

If it is scriptable, is there any help doc that gives the available attributes/properties/methods/etc?

Thanks

dnanian 04-10-2007 08:45 PM

The scripting dictionary is available in the normal way. However, I don't think you're going to find super extensive abilities. You could, however, modify our "schedule driver" (which is an applescript, available in the application bundle) to log additional information if necessary.

ShosMeister 04-11-2007 05:54 PM

I'm not sure what you mean by the "normal way". I've done a very minimal amount of Apple Script and all of it was done by using other sample code and modifying it to fit my needs. For example, this is the code that I cobbled together from samples in Retrospect and FileMaker to log the actions of the backup:

Code:

on volumeEnd given VolumeName:theVolume, KBCopied:theKB, FileCount:theFileCount, DurationInSeconds:theDuration, BackupDate:theBackupDate, startDate:theStartDate, endDate:theEndDate, destinationName:theDestination, ClientName:theClient, zoneName:theZone, scriptName:theScript, backupTypeString:theBackupType, subvolumeDiskName:theDiskName, fileErrorCount:theFileErrorCount, volumeErrorCode:theVolumeError, volumeErrorMessage:theVolumeErrorMessage, activatorCodeString:theActivatorCode
       
        set gStorageSet to theDestination
        set gNumVolumesBackedup to gNumVolumesBackedup + 1
        if theVolumeError is not 0 or theFileErrorCount is not 0 then
                set gVolumeErrors to gVolumeErrors + 1
        end if
       
        if theDiskName is not "" then
                set theParent to "The Subvolume’s parent disk is \"" & theDiskName & "\"."
        else
                set theParent to ""
        end if
        set theDuration to secondsConverter(theDuration)
       
        if theVolumeError is 0 then
                set theSuccess to "successfully"
                set mySubject to "Retrospect: Success"
                set gBackUpReport to gBackUpReport & "Volume \"" & theVolume & "\" completed " & theSuccess & ¬
                        ", copying " & theFileCount & " files for " & theKB & " K with " & theFileErrorCount & ¬
                        " errors." & return & return & "Script \"" & theScript & "\" finished copying volume \"" & ¬
                        theVolume & "\" to destination \"" & theDestination & "\"." & return & return & "Duration: " & ¬
                        theDuration & "." & return & return & lineDelimiter & return & return
        else
                set theSuccess to "with error " & theVolumeError & ": " & theVolumeErrorMessage
                set mySubject to "Retrospect: Error " & theVolumeError & ": " & theVolumeErrorMessage
                set gBackUpReport to gBackUpReport & "•Error•" & return & return & ¬
                        "Volume \"" & theVolume & "\" completed " & theSuccess & "." & return & return & lineDelimiter & return & return
        end if
       
        -- Record the parameters for each volume in a new record in a database
        tell application "FileMaker Pro"
                tell document "Retrospect Database"
                        create new record with data {theVolume, theKB, theFileCount, theDuration, theBackupDate as string, ¬
                                theStartDate as string, theEndDate as string, theDestination, theClient, theZone, theScript, ¬
                                theBackupType, theDiskName, theFileErrorCount, theVolumeError, theVolumeErrorMessage, theActivatorCode}
                end tell
        end tell
end volumeEnd


dnanian 04-11-2007 06:04 PM

Well, take a look at the schedule driver in the application package ("Copy Job Script.template") and you'll see how it works and where you can fit your stuff in...

ShosMeister 04-11-2007 07:48 PM

Thanks for pointing me in that direction. I did find it and was able to see and understand what it's doing. What I could not seem to find were the specific attributes that I am writing to the FM database. So, I thought I would look in the log file to see if there was anything in there I could see. What I found is that the date and (obviously) time is there as well as the volume information:
Code:

| 04:35:08 AM | Info | Started on Wed, Apr 11, 2007 at 4:35 AM
| 04:35:08 AM | Info | Source Volume: MacBook, mount: /, device: /dev/disk0s2, media: TOSHIBA MK1234GSX, interconnect: Internal SATA, file system: "Journaled HFS+", OS: 10.4.9 (8P2137), capacity: 111.47 GB, used: 54.91 GB, directories: 81558, files: 401214, ejectable: NO, ACLs: Disabled
| 04:35:08 AM | Info | Target Volume: Maxtor MacBook BU, mount: /Volumes/Maxtor MacBook BU, device: /dev/disk1s3, media: Maxtor OneTouch III, interconnect: External FireWire, file system: "Journaled HFS+", OS: 10.4.9 (8P2137), capacity: 114.75 GB, used: 52.58 GB, directories: 81531, files: 401895, ejectable: NO, ACLs: Disabled

I also found at the end of the log:
Code:

| 05:39:32 AM | Info |      Evaluated 481570 items occupying 54.43 GB (81555 directories, 367861 files, 32154 symlinks)
| 05:39:32 AM | Info |      Copied  481447 items totaling  52.20 GB (81535 directories, 367760 files, 32152 symlinks)
| 05:39:32 AM | Info |      Cloned  52.20 GB of data in 3852 seconds at an effective transfer rate of 13.88 MB/s

So it obviously knows this information in the program somewhere since it is writing it to the log. The question is can I get to that information via AppleScript and, if so, what are the variable names?

dnanian 04-11-2007 08:11 PM

You'll have to parse the log. Of course, you already have the date and time...

ShosMeister 04-28-2007 08:45 AM

Well, I can't seem to find any examples to parse the log file. Can anyone help out?

ShosMeister 05-05-2007 08:46 AM

Noone has any simple examples for this? :(

dnanian 05-05-2007 09:11 AM

Doesn't look like it... sorry!

Budgie 05-07-2007 04:50 PM

Hi ShosMeister

Maybe some good folks at either site below could help you construct your script.
I serached for "parse" on both sites which came up with quite a few ideas.

http://discussions.apple.com/forum.jspa?forumID=724

http://bbs.applescript.net/viewforum.php?id=2

Budgie


All times are GMT -4. The time now is 04:17 AM.

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc.