У меня есть сетевой диск, подключенный к Экстремальному значению Аэропорта, таким образом, это доступно каждый раз, когда я нахожусь в своей домашней сети Wi-Fi. Я хотел бы автоматически переместить файлы от определенной папки до определенной папки на сетевом диске, когда это доступно. Что лучший способ состоит в том, чтобы автоматизировать это?
Если Вы устанавливаете launchd
контролировать /Volumes
как WatchPath, это может запустить скрипт каждый раз, когда диск смонтирован. Просто сделайте этот тот сценария, который проверяет, смонтирован ли Ваш Экстремальный диск Аэропорта, затем выполняет копию, если это. Например:
#!/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
Это будет загружено автоматически, когда Вы войдете в систему и разгруженный, когда Вы выходите из системы.