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
답변
tmutils
10.7부터 존재합니다. 그 전에 언급했듯이 /System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper
Time Machine을 수동으로 실행할 수 있습니다.
그런 다음 wait
프로세스가 완료 될 때까지 기다릴 수 있습니다 . 논쟁이 없다면 그것은 단순히 기다릴 것이다. PID를 제공하면 반환 값 (종료 상태)을 얻을 수 있습니다.
특히, wait $!
해당 쉘에서 시작된 마지막 프로세스를 기다립니다. 그러나 Lauri가 언급했듯이 백업이 완료되기 전에 백업 도우미가 완료되기 때문에 머신이 완료되기 전에이 대기가 리턴됩니다. 백업이 완료되지 않았 음을 나타내는 프로세스 이름을 찾을 수 없습니다.
/var/logs/system.log (또는 콘솔을 통해)의 내용을 보면 백업이 완료되면 마지막으로 수행되는 작업은 타임 머신 디스크 이미지를 추출하는 것입니다. 확실히 나는 백업하는 동안 (이것은 OS X 10.6.8 임) 확인했다 /Volumes/Time Machine Backups
. 따라서 디렉토리가 존재하는지 간단히 확인할 수 있습니다. 더 이상 그렇지 않으면 Time Machine이 완료됩니다.
여기 의 지시 에 따라 네트워크의 Windows 시스템에 백업 한 이후 모든 사용자에게 이것이 효과가 있는지 확실하지 않습니다 .