在 OSX 下挂载特定磁盘/内存卡时运行脚本

Max*_*sen 5 usb storage mount shell-script macos

在 OSX 下安装驱动器时如何运行脚本?

我的用例是,当我的 USB 存储器/硬盘驱动器插入我的 USB 读卡器时,我想从我的 USB 存储器/硬盘驱动器中自动复制图像,当插入 DVD 或 CD 时,我想将其复制以存储在我的媒体中心。

我试过使用马可波罗(如在这个相关问题中提到的),但从我所看到的,它只能检测到某个 USB 设备的存在,而不是特定硬盘驱动器的存在。

Ste*_*lly 5

您可以编写一个用户启动守护程序,该守护程序在安装文件系统时运行。这里的线程http://forums.macosxhints.com/archive/index.php/t-89968.html应该可以帮助您入门。

您需要编写一个launchd plist,它在安装任何文件系统时运行脚本。然后,您的脚本应检查您感兴趣的卷是否已安装,然后执行它需要执行的任何操作。

您是否需要以 root 或用户身份运行?这将决定你的 plist 是进入 /Library/LaunchDaemons 还是 ~/Library/LaunchDaemons。如果是后者,它只会在用户登录时运行。

更新 - emmby 指出 URL 不再有效。总之,您需要在启动守护程序中使用 StartOnMount 键。例如(从http://stuff-things.net/2015/03/18/backups-with-rsync-and-launchd/复制):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>net.stuff-things.backup-to-dropbox</string>
    <key>ProgramArguments</key>
    <array>
      <string>/Users/spike/bin/backup-to-dropbox</string>
    </array>
    <key>StartOnMount</key>
    <true/>
  </dict>
</plist>
Run Code Online (Sandbox Code Playgroud)