Time Machine 백업이 완료되었는지 확인하는 bash 명령이 있습니까? 어떤 종류의 스크립트가 필요한지

ssh를 사용하여 Time Machine 디렉토리를 원격 서버에 rsycnc하는 스크립트를 작성 중입니다. 쉘 스크립트에서 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'

그것이하는 일은 백업 도우미 프로세스에 대한 프로세스 목록을 검색 한 다음 grep 명령 자체가 표시되지 않도록 필터링하는 것입니다. 명령이> 0 개의 결과를 반환하면 백업 도우미 프로세스는 계속 활성화됩니다. 그렇지 않은 경우 프로세스가 종료되었으므로 완료된 것으로 가정 할 수 있습니다.


답변

tmutil status 이런 종류의 쿼리를위한 훌륭한 도구가되었습니다.


답변

로 백업을 시작할 수도 있습니다 tmutil startbackup -b. -b백업이 완료 될 때까지 명령을 차단합니다.


답변

백업 관련 프로세스가 없다고 해서 Time Machine 백업이 완료되었다고 보장 할 수는 없습니다

Time Machine이 백업을 쓰는 볼륨에서 /Latest/…… 디렉토리 와 함께 다음을 고려하십시오.

  • 합니다 … .inProgress/… 번들.

해당 번들이 존재하면 백업이 완료되지 않은 것입니다.


답변

tmutil status|grep -c "Running = 1"

실행하면 ‘1’을, 그렇지 않으면 ‘0’을 반환합니다.


답변

나를 위해 다음과 같은 작업 …


스크립트 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

스크립트 backup_wait :

    #!/usr/bin/env bash

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


답변

tmutils10.7부터 존재합니다. 그 전에 언급했듯이 /System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helperTime Machine을 수동으로 실행할 수 있습니다.

그런 다음 wait프로세스가 완료 될 때까지 기다릴 수 있습니다 . 논쟁이 없다면 그것은 단순히 기다릴 것이다. PID를 제공하면 반환 값 (종료 상태)을 얻을 수 있습니다.

특히, wait $!해당 쉘에서 시작된 마지막 프로세스를 기다립니다. 그러나 Lauri가 언급했듯이 백업이 완료되기 전에 백업 도우미가 완료되기 때문에 머신이 완료되기 전에이 대기가 리턴됩니다. 백업이 완료되지 않았 음을 나타내는 프로세스 이름을 찾을 수 없습니다.

/var/logs/system.log (또는 콘솔을 통해)의 내용을 보면 백업이 완료되면 마지막으로 수행되는 작업은 타임 머신 디스크 이미지를 추출하는 것입니다. 확실히 나는 백업하는 동안 (이것은 OS X 10.6.8 임) 확인했다 /Volumes/Time Machine Backups. 따라서 디렉토리가 존재하는지 간단히 확인할 수 있습니다. 더 이상 그렇지 않으면 Time Machine이 완료됩니다.

여기 의 지시 에 따라 네트워크의 Windows 시스템에 백업 한 이후 모든 사용자에게 이것이 효과가 있는지 확실하지 않습니다 .