VMware では、スナップショットを使用しない限り、Apple の Time Machine を使用して仮想マシン (VM) をバックアップしないことをお勧めします。ただし、多くの高度で経験豊富なユーザーは、スナップショットの使用を強く思いとどまらせます。各スナップショットは前のスナップショットに連鎖するため、リンクの障害により VM が失敗し、VM の複雑さが増し、パフォーマンスが低下する可能性があることを意味します。 .
そこで、実行中の VM の電源を切ってからバックアップをコピーする AppleScript を作成しようとしています。それはクリーンでシンプルでなければなりません。
ただし、サスペンドされた VM でいくつかの問題が発生しました (つまり、Boot Camp VM はサスペンドできないため、問題にはなりません)。VM が中断されている場合、クリーンにバックアップするには、VM の電源をオフにする (シャットダウンする) 必要があります。一時停止された VM の電源をオフにする唯一の方法は、最初に VM を再開してから電源をオフにすることです。VM が独自のウィンドウで開かれている場合、これは AppleScript の問題ではありません。VMWare Fusion は、この VM をサスペンドとして正しく報告し、スクリプトが最初に VM を再開してからシャットダウンできるようにします。
残念ながら、VM ウィンドウが閉じられて独自のウィンドウがなく、仮想マシン ライブラリにのみ表示される場合、VMware Fusion は VM がサスペンドされていると正しく報告しません。VM がサスペンドされている場合でも、VMware Fusion はその状態を「電源オフ」と報告します。これは、サスペンドされた VM がバックアップされることを意味します。
詳細については、次を参照してください。
http://communities.vmware.com/message/2227680#2227680
これが私のコードです。フィードバック、提案、改善は大歓迎です!
(* 一定期間システムがアイドル状態になった後に仮想マシンを自動バックアップする Applescript アプリケーション 要件: [ ] VMWare Fusion の [設定...] -> [全般] -> [仮想マシンを閉じるとき:] で [仮想マシンの電源をオフにする] を選択する必要があります -- これは、VM ウィンドウが閉じられた場合に VMware がレポートするために必要です。 VM が実際に「サスペンド」されている場合でも、VM の電源状態が「電源オフ」になっている。ドキュメントオブジェクトからそのウィンドウにアクセスする方法はありません [ ] 「システム環境設定…」 -> 「省エネルギー」 -> 「電源アダプター」 -> 「コンピューターのスリープ」で、backup_after + (check_every * 2) より大きい値に設定する必要があります。 http://culturedcode.com/forums/read.php?7,30174,30597 これを実行可能にするには、アプリケーションとして保存します。 Dock に表示しない場合は、作成したアプリバンドルの Info.plist に LSBackgroundOnly を設定するか、 http://groups.google.com/group/macenterprise/browse_thread/thread/be7db35451e1dc70 *) プロパティ afterHours : 8 --23 -- アイドル状態の監視を開始する時刻 property workDayStarts : 5 -- アイドル状態の監視を停止する時刻 property backupDuration : 2 -- 仮想マシンのバックアップに必要な時間数 グローバルな backup_after、check_every -- TODO: これらは本当にグローバルである必要がありますか? backup_after を 10 に設定 --(40 * 60) -- 秒単位 check_every を 5 に設定 --(10 * 60) property cancelTimer : 60 -- ユーザーがバックアップをキャンセルしなければならない秒数 property virtualizationApp : "VMware Fusion" -- 変数は「tell application」ステートメントで使用できないか、コンパイルできないため、「VMware Fusion」の他のインスタンスを検索して置き換えます プロパティ resumeDelay : 120 --(4 * 60) -- 秒単位。通常、backup_after を実行します。 -- 今日バックアップが完了したかどうかをテストします 私の hasNotBackedUpToday(backupLocation) の場合 -- VM アプリケーションが VM を強制的に閉じることをユーザーに警告します。 cancelTimer から 1 x -1 までの secondsLeft で繰り返します dialogResult を設定してアラート virtualizationApp & " is about to force quit and back up virtual machines" メッセージ "This AppleScript is set to force close " & virtualizationApp & ", if it is open, and then to back up the virtual machines, then to back up the virtualizationApp機械。」& return & return & "[キャンセル] をクリックして、これらのアクションを後まで遅らせるか、[OK] をクリックして終了してバックアップします。" & return & return & secondsLeft & " 残り秒数." ボタン {"OK", "Cancel"} デフォルトのボタン "OK" は警告として 1 後にあきらめます secondsLeft = 1 または (dialogResult から返されたボタン) が「OK」の場合 -- VM の電源を強制的にオフにし、VM アプリを終了します。 私のpowerOffVMsQuitFusion() -- VM をバックアップする 私のbackupVMs(backupLocation、virtualMachinesLocation)の場合 「仮想マシンのバックアップに成功しました」というダイアログが表示されます。 そうしないと 「仮想マシンのバックアップに失敗しました」というダイアログが表示されます。 終了する場合 繰り返しを終了 それ以外の場合 (dialogResult から返されるボタン) が「キャンセル」の場合 ダイアログ「バックアップは後で延期」を表示します。 繰り返しを終了 終了する場合 リピート終了 そうしないと return (8 * 60 * 60) -- 今日バックアップしたので、8 時間後にもう一度試してください 終了する場合 終了する場合 check_every を返す 終了する場合 終わりを告げる アイドル状態で終了 (* * 過去 16 時間以内にバックアップしたかどうかを確認する *) hasNotBackedUpToday(theLocation) で アプリケーション「Finder」に伝える bLocation を POSIX ファイル theLocation にエイリアスとして設定します 作成日で並べ替え (bLocation のフォルダーを取得) myResult を結果に設定する myResultCount を myResult の数に設定します -- フォルダーにファイルが含まれていない場合、エラーが発生します。 (myResultCount が 0 ではない) の場合 theFile を (myResult の項目 1) に設定します ファイルの作成日が ((現在の日付) - (16 * 60 * 60)) より大きい場合 -- 「今日バックアップしました」というダイアログを表示します。 false を返す 終了する場合 終了する場合 -- 最大に達した場合はバックアップを削除します myResultCount ≥ numBackupsToKeep の場合 myResult のアイテム myResultCount を削除 終了する場合 currDate を現在の日付に設定する folderName を ("" & (currDate の年) & "-" & (currDate の月) & "-" & (currDate の日)) に設定します。 プロパティ {name:folderName} を使用して bLocation に新しいフォルダーを作成します 真を返す 終わりを告げる 終了 hasNotBackedUpToday (* * VM の電源を強制的にオフにし、VM アプリを終了します *) powerOffVMsQuitFusion() で アプリケーションに「VMware Fusion」と伝える activate -- VMware が実行されていない限り、VM が中断されているかどうかをテストできません delay 10 -- アプリケーションを開く時間を与える ドキュメントで currVM を使用して繰り返す powerState を currVM の電源状態に設定します -- サスペンドされた VM では電源オフは機能しません powerState がサスペンドされている場合 -- VM は、実際にサスペンドされている場合でも電源がオフになっていることを報告し、VM 自体のウィンドウが開いている場合は正しく報告します (VM ライブラリ、VM を右クリックし、[Windows を表示] を選択します)。 --display dialog "VM " & (currVM の名前) & " issuspend" currVM を再開します -- 実際に中断された場合にのみ再開します。それ以外の場合は、電源がオフになっている VM を開始します delay resumeDelay -- VM に再開する時間を与える 終了する場合 powerState の電源が入っている場合 --display dialog "Name: " & (currVM の名前) --display dialog "Name: " & (currVMのOS名) -- XP の保存されていないドキュメントは、力を入れない限り電源がオフにならないようにします。Win7 は力を入れなくても動作します 試す (*(currVM の OS 名) に「7」が含まれている場合 -- 「Win 7: 力を入れないと電源が切れます」というダイアログを表示します。 currVM の電源を切る 遅延 powerOffDelay そうしないと*) -- 「Windows 7 (XP など) ではありません: 強制的に電源がオフになります」というダイアログを表示します。 強制的にcurrVMの電源を切る --終了する場合 エラー時 errMsg 番号 errNum アプリケーション「Finder」に伝える 表示ダイアログ ("errMsg: " & errMsg & ", errNum: " & errNum) 終わりを告げる 試してみる 終了する場合 リピート終了 終了する 遅延 5 終わりを告げる powerOffVMsQuitFusion の終了 (* * VM をバックアップし、必要に応じて最も古いバックアップを削除します *) backupVMs(thisLocation, thisVMsLocation) アプリケーション「Finder」に伝える thisBackupLocation を POSIX ファイル thisLocation にエイリアスとして設定します 作成日でソート (thisBackupLocation のフォルダーを取得) myFinderResult を結果に設定する -- フォルダーにファイルが含まれていない場合、エラーが発生します。 ((myFinderResult のカウント) = 0) の場合 表示ダイアログ「エラー。作成したばかりのフォルダはどうなりましたか?」 false を返す そうしないと backupFolder を (myFinderResult の項目 1) に設定します --display dialog "Folder name: " & (backupFolder の名前) -- フォルダが空かどうかを確認します ((backupFolder のファイル数) が 0 でない場合) ダイアログ「エラー。バックアップ フォルダが空ではありませんでした。」が表示されます。 false を返す 終了する場合 -- 仮想マシンをバックアップ フォルダにコピーします -- vmsLocation をエイリアス "Macintosh HD:Users:mikeong:Documents:Virtual Machines" に設定します。 vmsLocation を thisVMsLocation のエイリアスに設定します vmsLocation のすべてのファイルを backupFolder に複製します 真を返す 終了する場合 終わりを告げる バックアップ VM の終了