Windows11では、データの安全性を確保するためにバックアップが不可欠です。
しかし、バックアップを取ることでディスク領域が圧迫されることがあります。
そこで、世代管理を行い、古いバックアップを定期的に削除することが重要です。
この記事では、バッチファイルを作成する初心者でも理解できるように、wbadminコマンドとRobocopyコマンドを使用した世代管理バックアップの作成方法を説明します。
バックアップでディスク領域が圧迫されるので世代管理して一番古い世代は削除したい
バックアップの世代管理は、新しいバックアップを作成するたびに、一番古いバックアップを削除することで、ディスク領域を効率的に使用する方法です。
これにより、ディスクがいっぱいになることを防ぎつつ、最新のバックアップを保持することができます。
wbadminコマンドを使った世代管理するバックアップのバッチ例
wbadminコマンドは、Windowsのバックアップと復元機能をコマンドラインから操作するためのツールです。
以下は、wbadminを使用してバックアップを世代管理するバッチファイルの例です。
@echo off
setlocal
:: バックアップ設定
set BACKUP_PATH=C:\Backup
set BACKUP_COUNT=5
:: 最新のバックアップを作成
wbadmin start backup -backupTarget:%BACKUP_PATH% -include:C: -quiet
:: 古いバックアップを削除
for /f "skip=%BACKUP_COUNT% delims=" %%i in ('dir /b /ad-h /t:c /o-d %BACKUP_PATH%') do (
rd /s /q "%BACKUP_PATH%\%%i"
)
endlocal
このバッチファイルは、Cドライブをバックアップし、指定された数の最新バックアップを保持しながら、古いバックアップを削除します。
バッチファイルの解説
- 1.
@echo off
– このコマンドは、バッチファイルが実行されるときにコマンドプロンプトに表示されるコマンドのエコーをオフにします。
これにより、実行中のコマンドがユーザーに表示されなくなります。 - 2.
setlocal
– 環境変数の変更を現在のバッチファイルに局所化します。
これにより、バッチファイルによる変更が他のプログラムやバッチファイルに影響を与えないようになります。 - 3.
set BACKUP_PATH=C:\Backup
– バックアップファイルを保存するパスを指定します。 - 4.
set BACKUP_COUNT=5
– 保持するバックアップの最大数を設定します。(この例では5) - 5.
wbadmin start backup -backupTarget:%BACKUP_PATH% -include:C: -quiet
–wbadmin
はWindowsのバックアップコマンドで、ここではCドライブを%BACKUP_PATH%
にバックアップします。-quiet
オプションにより、操作がサイレントで(ユーザーの介入なしに)行われます。 - 6.
for /f "skip=%BACKUP_COUNT% delims=" %%i in ('dir /b /ad-h /t:c /o-d %BACKUP_PATH%') do (rd /s /q "%BACKUP_PATH%\%%i")
– このループは、指定されたバックアップフォルダ内の古いバックアップを削除します。dir
コマンドは、指定されたパスのディレクトリ内容をリストアップし、/b /ad-h /t:c /o-d
オプションにより、フォルダのみを作成日時の降順で表示します。skip=%BACKUP_COUNT%
は、最新のバックアップを除外するために使用されます。
その後、rd /s /q
コマンドでディレクトリをサイレントで(確認なしに)完全に削除します。 - 7.
endlocal
–setlocal
コマンドによって開始された局所化を終了し、環境変数の変更を元に戻します。
このバッチファイルは、定期的なバックアップと古いバックアップの整理を自動化するために役立ちます。
バックアップの自動化は、データの安全性を高め、システムの維持管理を容易にします。
ただし、このスクリプトを使用する前に、適切な権限とバックアップパスが設定されていることを確認してください。
また、重要なデータを失わないように、バックアップのテストと検証も行うことが重要です。
このバッチが失敗するよくある原因と解決方法
このバッチファイルが失敗する一般的な原因は、ディスクスペースの不足や、バックアップパスが正しくないことです。これらの問題を解決するには、十分なディスクスペースを確保するか、バックアップパスを確認してください。
Robocopyコマンドを使った世代管理するバックアップのバッチ例
Robocopyコマンドは、ファイルのコピーと同期を行うための強力なツールです。
以下は、Robocopyを使用してバックアップを世代管理するバッチファイルの例です。
@echo off
setlocal
:: バックアップ設定
set SOURCE_PATH=C:\Data
set BACKUP_PATH=C:\Backup
set BACKUP_COUNT=5
:: バックアップフォルダの作成
set TIMESTAMP=%DATE:~-10,4%%DATE:~-5,2%%DATE:~-2,2%
set DEST_PATH=%BACKUP_PATH%\%TIMESTAMP%
mkdir %DEST_PATH%
:: データのバックアップ
robocopy %SOURCE_PATH% %DEST_PATH% /MIR
:: 古いバックアップを削除
for /f "skip=%BACKUP_COUNT% delims=" %%i in ('dir /b /ad-h /t:c /o-d %BACKUP_PATH%') do (
rd /s /q "%BACKUP_PATH%\%%i"
)
endlocal
このバッチファイルは、指定されたソースパスからデータをバックアップし、タイムスタンプ付きのフォルダに保存します。
そして、指定された数の最新バックアップを保持しながら、古いバックアップを削除します。
バッチファイルの解説
- 1.
@echo off
– これは、バッチファイルが実行されるときにコマンドプロンプトに表示されるコマンドのエコーをオフにするためのものです。
これにより、実行中のコマンドがユーザーに表示されなくなります。 - 2.
setlocal
– このコマンドは、バッチファイル内で定義された環境変数がバッチファイルの外部に影響を与えないようにするためのものです。 - 3. バックアップ設定 – ここでは、ソースパス(バックアップするデータがある場所)、バックアップパス(バックアップを保存する場所)、そしてバックアップの保持数(この例では5)を設定しています。
- 4. バックアップフォルダの作成 – 現在の日付からタイムスタンプを生成し、そのタイムスタンプを使用して新しいバックアップフォルダを作成します。
- 5. データのバックアップ –
robocopy
コマンドを使用して、ソースパスから目的パスへデータをミラーリングします。
これにより、ソースパスの内容が目的パスに完全にコピーされます。 - 6. 古いバックアップを削除 –
for
ループとdir
コマンドを使用して、指定されたバックアップ保持数を超える古いバックアップフォルダを削除します。 - 7.
endlocal
– これは、setlocal
コマンドで開始されたローカル環境を終了し、バッチファイルの実行が完了したことを示します。
このバッチが失敗するよくある原因と解決方法
Robocopyバッチが失敗する主な原因は、アクセス権限の不足や、ネットワークエラーです。
これらを解決するには、管理者としてバッチファイルを実行するか、ネットワーク接続を確認してください。
注意
- まずはテスト用の環境でバッチファイル実行のテストを十分に行いましょう。
- バッチファイルを実行する前に、必ずデータが正しくバックアップされていることを確認してください。
- バッチファイルの実行は、データ損失のリスクを伴うため、慎重に行ってください。
まとめ
バックアップの世代管理をバッチファイルで行うことは、ディスク領域を効率的に使用し、データの安全性を高めるために有効な方法です。
wbadminコマンドとRobocopyコマンドを使用したバッチファイルの例を参考に、自分の環境に合わせたバックアップ戦略を立ててください。
また、バッチファイルを使用する際には、慎重に操作し、システムに影響を与えないように注意してください。
免責規定
この記事で提供される情報は、一般的なガイダンスを目的としており、すべての環境やシステムでの動作を保証するものではありません。
OSのバージョンやリリースによっては、記載されているコマンドが実行できない、または異なる結果をもたらす可能性があります。
また、会社内のパソコンなど、ポリシーや権限によっては実行できない場合があります。
実行には管理者権限が必要な場合が多いため、注意が必要です。
この記事の情報を使用することによって生じる問題や結果について、筆者およびサイト管理者は責任を負いません。
すべての操作は自己責任で行ってください。
最後までお読みいただきありがとうございました。
またお会いしましょう!
コメント