web-dev-qa-db-ja.com

特定のディスク/メモリカードがOSXにマウントされているときにスクリプトを実行する

ドライブがOSXでマウントされているときにスクリプトを実行するにはどうすればよいですか?

私の使用例は、USBメモリ/ハードドライブがUSBカードリーダーに挿入されたときに画像を自動的にコピーし、DVDまたはCDが挿入されたときに、メディアセンターに保存するためにコピーしたいというものです。

私はMarcoPoloを使用してみました( この関連する質問 で述べたように)が、私が見ることができることから、特定のハードドライブの存在ではなく、特定のUSBデバイスの存在のみを検出できます。

4

ファイルシステムがマウントされたときに実行されるユーザー起動デーモンを作成できます。ここのスレッド http://forums.macosxhints.com/archive/index.php/t-89968.html はあなたが始めるのを助けるはずです。

ファイルシステムがマウントされたときにスクリプトを実行するlaunchdplistを作成する必要があります。次に、スクリプトは、関心のあるボリュームがマウントされていることを確認してから、必要な処理を実行する必要があります。

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>
4
Steve Folly