Я пишу сценарий, который будет rsycnc мой каталог Time Machine на удаленный сервер с помощью ssh. Я переключился с сценария оболочки на AppleScript, а затем снова на сценарий Apple, и мне все равно, какой сценарий потребуется для решения.
Я успешно запустил процесс резервного копирования с помощью этого небольшого фрагмента кода.
do shell script "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper >/dev/null 2>&1 &"
Сейчас я пытаюсь выполнить команду rsync после завершения резервного копирования. Есть ли в AppleScript чистый способ проверить, завершен ли процесс резервного копирования? Или есть хороший «крючок», который вы можете использовать в bash, чтобы проверить, завершен ли он?
backup
time-machine
applescript
bash
whitneyz
источник
источник
Ответы:
Вот один из способов - я знаю, что это далеко не «правильное» решение, но я думаю, что оно сработает.
ps ax | grep "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper" | grep -v 'grep'
Он выполняет поиск в списке процессов для процесса backupd-helper, а затем отфильтровывает саму команду grep. Если команда возвращает> 0 результатов, процесс backupd-helper все еще активен. Если нет, процесс завершен, и вы можете предположить, что это сделано.
источник
pgrep backupd-helper
TIME_MACHINE_PID=$! wait $TIME_MACHINE_PID
может быть, в отдельном ответе? Спасибо.tmutil status
Теперь у Lion есть хороший инструмент для такого рода запросов.На более новых ОС существует недокументированная команда,
tmutil currentphase
которая показывает имя текущей фазы.источник
tmutuil
так полно побед, трудно выразить, как приятно смотреть и копаться в статусе резервной копии, статистике и программном управлении.Вы также можете начать резервное копирование с
tmutil startbackup -b
.-b
блокирует команду до завершения резервного копирования.источник
tmutil status|grep -c "Running = 1"
возвращает «1» при работе, «0» при отсутствии.
источник
Отсутствие процессов, связанных с резервным копированием, не является гарантией того, что резервное копирование Time Machine завершено
На томе, на который Time Machine записывает свои резервные копии: рядом с
/Latest/
каталогом……, рассмотрим:.inProgress/
... связкаЕсли этот пакет существует, резервное копирование является неполным.
источник
.inProgress
каталога нет , Time Machine все еще может быть занята подготовкой или приведением в порядок после резервного копирования (например, удаления старых резервных копий).Следующая работа для меня ...
Скрипт backup_status:
Скрипт backup_wait:
источник
tmutils
существует только с 10.7. До этого вы можете использовать, как уже упоминалось,/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper
для ручного запуска Time Machine.Затем вы можете использовать,
wait
чтобы дождаться завершения процесса. Без аргументов это будет просто ждать; если вы предоставите PID, вы можете получить его возвращаемое значение (статус выхода).В частности,
wait $!
будет ждать последний процесс, запущенный в этой оболочке. Однако, как упомянул Лаури, это ожидание вернется до того, как машина времени будет завершена, поскольку backupd-helper завершит работу до того, как будет выполнено резервное копирование. Мне не удалось найти имя процесса, которое указывало бы, что резервное копирование не было завершено.Глядя на содержимое /var/logs/system.log (или через консоль), я заметил, что когда резервное копирование завершено, последнее, что нужно сделать, - это извлечь образ диска машины времени. Конечно же, я проверил, что (это OS X 10.6.8) во время резервного копирования есть
/Volumes/Time Machine Backups
. Таким образом, вы можете просто проверить, существует ли каталог. Когда это больше не происходит, Time Machine заканчивается.Я не уверен, будет ли это работать для всех, так как я следовал приведенным здесь инструкциям для резервного копирования на компьютер с Windows в сети.
источник