タイムマシンがバックアップが終了したかどうかを確認するために確認するバッシュコマンドはありますか?

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

質問

SSHを使用してタイムマシンディレクトリをリモートサーバーにrsycncするスクリプトを作成しています。シェルスクリプトからApplescriptに切り替えてから、Appleスクリプトに戻りましたが、ソリューションに必要なスクリプトの種類はあまり気にしません。

このコードの小さなスニペットでバックアッププロセスを開始することに成功しました。

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

私が今やろうとしているのは、そのバックアップが完了するとRSYNCコマンドを実行することです。 applescriptにクリーンな方法はありますか?バックアッププロセスが完了しているかどうかを確認しますか?それとも、Bashで使用して完成したかどうかを確認できる良い「フック」がありますか?

役に立ちましたか?

解決

1つの方法があります - 私はそれが「適切な」解決策に近い場所ではないことを知っていますが、それがうまくいくと思います。

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

それが行うことは、BackUpd-Helperプロセスのプロセスリストを検索し、GREPコマンド自体が表示されないようにすることです。コマンドが> 0の結果を返す場合、BackUpd-Helperプロセスはまだアクティブです。そうでない場合、プロセスは終了したため、それが完了したと仮定するかもしれません。

他のヒント

tmutil status この種のクエリに最適なツールがあるので、ライオンのやり方です。

バックアップを開始することもできます tmutil startbackup -b. -b バックアップが終了するまでコマンドをブロックします。

バックアップ関連のプロセスがないことです いいえ タイムマシンのバックアップが完了することを保証します

タイムマシンがバックアップを書くボリュームについて:/Latest/…ディレクトリ、検討してください:

  • .inProgress/…バンドル。

そのバンドルが存在する場合、バックアップは不完全です。

tmutil status|grep -c "Running = 1"

実行するときに「1」を返します。

私のための次の仕事...


スクリプト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 タイムマシンを手動で実行します。

その後、使用できます wait プロセスが終了するまで待つ。議論がなければ、それは単に待つでしょう。 PIDを提供すると、返品値(exitステータス)を取得できます。

特に、 wait $! そのシェルで最後のプロセスが開始されるのを待ちます。ただし、Lauriが述べたように、バックアップが完了する前にBackupd-Helperが終了するため、タイムマシンが完了する前にこの待機が戻ります。バックアップが完了していないことを示すプロセス名を見つけることができませんでした。

/var/logs/system.log(またはコンソール経由)の内容を見ると、バックアップが終了すると、最後に行われることは、タイムマシンディスク画像を排除することであることに気付きました。案の定、バックアップ中に(これはOS X 10.6.8)を確認しました。 /Volumes/Time Machine Backups. 。したがって、ディレクトリが存在するかどうかを単純に確認できます。それがなくなったとき、タイムマシンが終了します。

私が指示に従ってから、これがすべての人に役立つかどうかはわかりません ここ ネットワーク上のWindowsマシンにバックアップします。

ライセンス: CC-BY-SA帰属
所属していません apple.stackexchange
scroll top