Applescript:将多个驱动器同步到1个有组织的驱动器

时间:2017-12-06 18:59:35

标签: applescript backup rsync organized

我一直在使用一个简单的automator备份实用程序,使用applescript和rsync,并且除了另外一个问题之外还有其他一切工作,在启动脚本时,我希望能够选择多个硬盘来备份(有效) ,之后,我只允许选择1个备份驱动器,问题是,我希望所有选定的驱动器都驻留在备份驱动器上的自己的文件夹中(参见附件截图),但我有点失去了我应该怎么做(我是applecript和rsync的新手,只做了很多研究才得到这个目标,但我现在卡住了)

这是我的代码,所有驱动路径都在'sources'变量中,我在for循环中迭代。

    set sources to (choose folder with prompt "Select drives to back up" default location "Volumes" with multiple selections allowed)
    set destination to (the POSIX path of (choose folder with prompt "Select destination volume" default location "Volumes"))

    #for loop iterating all sources to backup
    repeat with aliasPath in sources

        set source to the POSIX path of aliasPath

        set sciptsFinished to false

        tell application "Terminal"
            if not (exists window 1) then reopen
            activate
            do script "rsync --dry-run --archive -v --progress --exclude=\".*\"  --delete --delete-during --stats --human-readable --human-readable " & quoted form of source & " " & quoted form of destination in window 1

            delay 5 #give terminal time to activate
            repeat while (window 1 is busy)
                delay 1
            end repeat

            do script "osascript -e 'display notification \"RSYNC file changes calculated.\" with title \"RSYNC Backup\"'" in window 1

            #mark scripts completed
            set scriptsFinished to true

        end tell

        #wait for scripts to finish before proceeding
        repeat while (scriptsFinished is false)
            delay 2
        end repeat

任何帮助都将不胜感激(如果您对代码有评论,请随时启发我,因为我仍然是AppleScript的新手)

提前致谢!

Sources to backup (multiple selections allowed

Destination drive (only 1 selection allowed)

1 个答案:

答案 0 :(得分:0)

使用一个小技巧解决了这个问题:

从choose文件夹返回并转换为POSIX路径的路径有一个结束正斜杠,例如 Volumes/Data Drive X/

但是,当不提供最后一个斜杠时,路径目的地应该有一个具有相同名称的文件夹(如果不可用则创建),这正​​是我需要的。

要从路径中删除最后一个斜杠,我只需在将别名转换为POSIX路径后添加以下内容:     set source to text 1 thru -2 of source

这样     Volumes/Data Drive X/ 变     Volumes/Data Drive X

希望这可以帮助任何有同样问题的人! :)