ОС: горный лев OSX
Я пытаюсь написать скрипт, который делает следующее
- Проверьте, существует ли файл 1 в месте назначения 1 (bitcasa), если он существует, скопируйте исходную папку в место назначения 1, если файл не существует, найдите процесс bitcasa и уничтожьте его, затем подождите 60 секунд, затем запустите bicasa. попробуйте еще раз (цикл?) #bitcasa иногда перестает работать, и ее нужно перезапустить.
- Проверьте, существует ли файл 2 в месте назначения 2 (общий ресурс nfs), если он существует, скопируйте исходную папку в место назначения 1, если файл не существует, попробуйте смонтировать общий ресурс nfs. попробуй еще раз (цикл?)
проверить скопированные файлы, если файлы скопированы успешно удалить исходные файлы
Я хочу, чтобы скрипт пытался выполнить несколько попыток, если он пропингует хост NAS, он должен сдаться и попробовать в следующий раз, когда скрипт запустится. Я хочу запускать скрипт каждые 2 часа. Шов crontab был удален в горном льве.
Когда я записываю это, я понимаю, что это немного сложнее, чем я думал сначала.
Во-первых, что касается монтирования общего ресурса nfs, в OSX, если вы извлекаете смонтированный общий ресурс nfs, папка в /Volumes удаляется. Каков наилучший способ убедиться, что общий ресурс nfs, который я всегда монтировал, если nas доступен? Это может быть обработано вне сценария? Если я вручную смонтирую общий ресурс nfs, мне нужно будет создать /Volumes/media, и это приведет к тому, что если я использую графический интерфейс для монтирования, общий ресурс будет использовать /Volumes/media-1/sins /Volumes/media vill уже существует.
Что касается убийства процесса по имени sins, я не могу знать PID, я пробовал с помощью команды linux, которую нашел: kill ps -ef | grep bitcasa | grep -v grep | awk ‘{print $2}’
это не сработало.
Я понятия не имею, как проверить, все ли файлы были успешно скопированы, может быть, rsync может позаботиться об этом?
Я начал с этого (не проверено)
#check if bitcasa is running (if file exist)
if [ -f /Volumes/Bitcasa\ Infinite\ Drive/file.ext ]
then
rsync -avz /Users/username/source /Volumes/Bitcasa\ Infinite\ Drive/destination/
else
#Bitcasa might have stopped, check if process i running, kill if it is, then start bitcasa
fi
#Check if nfs share is mounted (if file exist)
if [ -f /Volumes/media/file.ext ]
then
rsync -avz /Users/username/source /Volumes/media/
fi
else
#nfs share (192.168.1.106:/media/) need to be mounted to /Volumes/media
Я еще немного поработаю над этим сам, но знаю, что мне понадобится помощь.
Или я делаю этот способ сложным? может быть, программа резервного копирования может это сделать?