Запуск rsync при сетевом подключении

Запуск rsync при сетевом подключении

У меня есть один Mac, который всегда включен и является моим основным компьютером. У меня также есть MacBook, и я пытаюсь синхронизировать свою библиотеку iPhoto. Поэтому я могу успешно использовать rsync для синхронизации файлов. Я использую cron, чтобы он запускался раз в день.

На самом деле MacBook не всегда включен, поэтому я ищу способ запустить rsync, когда оба компьютера подключены к одной и той же сети Wi-Fi. Поэтому я предполагаю, что лучшим способом будет как-то запустить rsync, когда аэропорт подключен. Какой лучший способ?

решение1

Поскольку rsync изменяет только то, что нужно изменить, не помешает просто запустить задание cron раз в час. Если копировать нечего или почти нечего, это займет совсем немного времени. Но вы не хотите, чтобы задание зависало, пытаясь его выполнить, поэтому вы можете создать небольшой скрипт оболочки, чтобы проверить, включен ли ваш MacBook, и если да, то заставить его запустить команду rsync. На всякий случай, если возникнет проблема и задание rsync зависнет или займет больше часа, вам нужно убедиться, что вы не запускаете новый экземпляр, пока предыдущий все еще работает. Вот пример скрипта (который я назову MyRsyncJob, и который вам придется пересмотреть):

[ -s /var/run/MyRsyncJob ] && {
  PID=$(cat /var/run/MyRsyncJob)
  echo "MyRsyncJob is still running (PID $PID)" >&2
  exit 1
}
ping  -c 1 -o MacBook >&- || exit 1 # Exit if MacBook isn't reachable
trap 'rm /var/run/MyRsyncJob' 0 15 # Remove run file upon exit or TERM signal
echo $$ >> /var/run/MyRsyncJob     # Put PID into run file
rsync -zave ssh /path/to/my/iphoto/library/ MacBook:/path/to/destination/directory

Надеюсь, это поможет.

Связанный контент