我有一个连接到 Airport Extreme 的网络驱动器,因此只要我使用家庭 wifi 网络,它就可用。我想在网络驱动器可用时自动将文件从特定文件夹移动到网络驱动器上的特定文件夹。自动化此操作的最佳方法是什么?
答案1
如果您将launchd
监视设置/Volumes
为 WatchPath,则每次安装驱动器时它都可以运行脚本。只需让此脚本检查您的 Airport Extreme 驱动器是否已安装,然后如果已安装则运行副本。例如:
#!/bin/bash
if [ -e /Volumes/AirportExtremeDriveName ]
rsync -aE /a/specific/folder/ /Volumes/AirportExtremeDriveName/another/specific/folder/
fi
我建议rsync
这样做,因为它足够智能,不会复制源和目标中相同的文件,这将大大加快速度。如果您添加该-delete
参数,则源中不再存在的任何文件都将从目标中删除。
无需额外付费,以下是launchd
脚本。将以下内容保存在~/Library/LaunchAgents/some.meaningful.name.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<dict>
<key>Label</key>
<string>some.meaningful.name</string>
<key>LowPriorityIO</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/where/you/saved/your/script.sh</string>
</array>
<key>WatchPaths</key>
<array>
<string>/Volumes</string>
</array>
</dict>
</plist>
然后,launchd
使用以下命令加载作业:
launchctl load ~/Library/LaunchAgents/some.meaningful.name.plist
当您登录时它将自动加载,当您注销时它将自动卸载。