Windows Server 2012 R2 Essentialsのサーバー バックアップはWindows Server 2008から標準搭載されたWindows Server Backupを使用しているので、本スクリプトはWindows Server Backupの最古のデータを削除する方法と置き換えが可能です。
バックアップHDDの空き容量が0になる事も・・・
Windows Server 2012 R2 Essentialsのサーバー バックアップを実行すると空き容量によって警告アラートが出力されます。警告アラートからサーバー バックアップの仕様と対処法が読み取れます。
- 空き容量が10%を下回るとアラートが出力される
- 古いデータは新しいデータで上書きされる
- バックアップ済みデータを保持したい場合は、大容量HDDへ交換する
- 空き容量を増やしたい場合は、バックアップ項目を見直す
しかし、空き容量以上のデータをバックアップするとバックアップが失敗し、重要アラートが出力されます。
テスト環境で確認した限り、空き容量が0なため今後のサーバー バックアップは失敗し続けます。
以下のイベント ログにも同一内容が記録されていました。
[アプリケーションとサービス ログ]→[Microsoft]→[Windows]→[Backup]→[Operational]
最古のバックアップ データを削除する
一つの対処法として、PowerShellを使用し最古のバックアップ データを削除し空き容量を確保する方法があります。- Windows Server 2012 R2 Essentialsへリモート デスクトップ接続
- PowerShell を管理者権限で実行
- スクリプトを実行
簡単なスクリプト
テスト環境で試した限り、下記スクリプトで実行すると最古のバックアップ データが削除できました。Remove-WBBackupSet -DeleteOldest -Force
厳密なスクリプト
Technet ライブラリのサンプルを紐解いたスクリプトは以下の通りです。#現在のバックアップ ポリシーを確認 $policy = Get-WBPolicy #バックアップ先を指定 $target = Get-WBBackupTarget -Policy $policy #WSEサーバー名を指定 ##今回は、WSE上で実行するので環境変数からコンピューター名を取得 $machine = $env:COMPUTERNAME #最古のバックアップ データを削除 Remove-WBBackupSet -DeleteOldest -BackupTarget $target -MachineName $machine -Force
嵌りやすいポイント
PowerShell を実行する時に嵌りやすいポイントをメモします。(私が実際に嵌った点です)パラメータの値は文字列、数値だけではなくオブジェクトを指定する事があります。
厳密なスクリプトでいえば、
- Get-WBBackupTargetの-Policy パラメータの値は、Get-WBPolicy型
- Remove-WBBackupSetの-BackupTarget パラメータの値はWBBackupSet型
Microsoftのドキュメントにはパラメータの
削除前後を確認
Get-WBBackupSet コマンドレットを実行し、バックアップ データを確認してみましょう。最古のバックアップ データは 2015/10/29 12:00(UTC+09:00)、次のデータは 2015/10/29 23:00(UTC+09:00)でした。
Remove-WBBackupSet コマンドレットを実行、最古のバックアップ データを確認すると2015/10/29 23:00(UTC+09:00)が最古のバックアップ データになっているので最古のバックアップ データが正常に削除された事が確認できました。
余談:全てのバックアップ データを削除する
注意が必要なPowerShell スクリプトになります。全てのサーバー バックアップ データを削除するスクリプトです。
テスト用、かつ、自己責任で使用してください。
#全データを削除する Get-WBBackupSet | Foreach-Object{ Remove-WBBackupSet -BackupSet $_ -Force -ErrorAction Stop }