Автоматически переместите файлы во внешний диск, когда это будет доступно

У меня есть сетевой диск, подключенный к Экстремальному значению Аэропорта, таким образом, это доступно каждый раз, когда я нахожусь в своей домашней сети Wi-Fi. Я хотел бы автоматически переместить файлы от определенной папки до определенной папки на сетевом диске, когда это доступно. Что лучший способ состоит в том, чтобы автоматизировать это?

1
задан 18.11.2010, 07:06

1 ответ

Если Вы устанавливаете 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

Это будет загружено автоматически, когда Вы войдете в систему и разгруженный, когда Вы выходите из системы.

2
ответ дан 12.12.2019, 13:04

Теги

Похожие вопросы