Есть ли команда Bash, чтобы проверить, закончил ли Time Machine резервное копирование?

apple.stackexchange https://apple.stackexchange.com/questions/5105

Вопрос

Я пишу сценарий, который приведет к тому, что мой каталог Time Machine на удаленный сервер с помощью SSH. Я перешел от скрипта оболочки на AppleScript, а затем вернулся к сценарию Apple, и мне не волнует, какой сценарий потребуется решение.

У меня был успех, начав процесс резервного копирования с этого маленького фрагмента кода.

do shell script "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper >/dev/null 2>&1 &"

Теперь я пытаюсь сделать команду RSYNC, выполненную после завершения резервной копии. Есть ли какой -нибудь чистый способ в AppleScript, чтобы проверить, завершен ли процесс резервного копирования? Или есть хороший «крючок», который вы можете использовать в Bash, чтобы проверить, будет ли он завершен?

Это было полезно?

Решение

Вот один из способов - я знаю, что это далеко не «правильное» решение, но я думаю, что это сработает.

ps ax | grep "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper" | grep -v 'grep'

Что он делает, так это поиск в списке процессов для процесса Backupd-Helper, а затем отфильтровывает саму команду GREP. Если команда возвращает> 0 результатов, процесс Backupd-Helper все еще активен. Если нет, процесс закончился, и поэтому вы можете предположить, что это сделано.

Другие советы

tmutil status Это Lion Way теперь, когда у нас есть хороший инструмент для такого рода запроса.

Вы также можете начать резервную копию с tmutil startbackup -b. -b блокирует команду, пока резервная копия не закончится.

Отсутствие процессов, связанных с резервным копированием, нет уверенность в том, что резервная копия машины времени завершена

На том томе, на который Машина пишет свои резервные копии: наряду с…/Latest/… Справочник, подумайте:

  • .inProgress/… пучок.

Если этот пакет существует, резервная копия является неполной.

tmutil status|grep -c "Running = 1"

Возвращает «1» при запуске, «0», когда нет.

Следующая работа для меня ...


Script Backup_status:

    #!/usr/bin/env bash
    #
    # Determines if Time Machine is running and works with older Mac OS x versions
    #
    if [ x == x`type -P tmutil` ]; then
            # Older OSx
            count=`ps -ef | grep -v grep | grep -c 'CoreServices/backupd'`
            # Should also detect /Volume/Time Machine …/Latest/… directory ….inProgress/… bundle existence here to make it tight.
    else
            # OSx 10.7+
            count=`tmutil status | grep -c "Running = 1"`
    fi

    if [ $count == 0 ]; then
            echo stopped
    else
            echo running
    fi

Script Backup_Wait:

    #!/usr/bin/env bash

    #
    # Waits for Time Machine backup to complete
    #
    while [ `backup_status` == running ] ; do
            sleep 2
    done

tmutils существует только с 10.7. Перед этим вы можете использовать, как уже упоминалось, /System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper Чтобы вручную запустить машину времени.

Затем вы можете использовать wait подождать, пока процесс не закончится. Без аргументов это просто будет ждать; Если вы предоставите PID, вы можете получить его возвратное значение (статус выхода).

Особенно, wait $! Будет ждать последнего процесса, начатого в этой оболочке. Тем не менее, как упоминал Лаури, это ожидание вернется до того, как Time Machine закончится, потому что Backupd-Helper завершится до того, как будет выполнено резервная копия. Я не смог найти какое -либо имя процесса, которое указывало на то, что резервная копия не была завершена.

Глядя на содержимое /var/logs/system.log (или через консоль), я заметил, что когда резервное копирование закончено, последнее, что сделано, - это выбросить образ машины времени. Конечно, я проверил это (это OS X 10.6.8) во время резервной копии есть /Volumes/Time Machine Backups. Анкет Таким образом, вы можете просто проверить, существует ли каталог. Когда это больше не происходит, Time Machine закончена.

Я не уверен, сработает ли это для всех с тех пор, как я следовал указаниям здесь Для резервного копирования на машине Windows в сети.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с apple.stackexchange
scroll top