ここでは、夜中に自動でバックアップを取る方法を解説します。夜中にパソコンが勝手に立ち上がり、バックアップを取った後に自動でシャットダウンして終了です。
この一連の動作はバッチファイルだけで実現することはできないので、タスクスケジューラというwindowsに元々入っている機能とパソコン自体の設定を併用して作り上げていきます。
その他の関連しそうな記事
バックアップを取るバッチファイルを作る
まずは、バッチファイルを作っていきましょう。バックアップを取るバッチファイルは以下のようになります。
1 |
xcopy [バックアップしたいフォルダ] [バックアップ先のフォルダ] /d /e /c /y /r |
「xcopy」コマンドは第8章に登場したように、フォルダを中身ごとコピーするコマンドでした。第1引数にバックアップしたいフォルダを指定します。第2引数にはバックアップ先のフォルダを指定します。
各オプションをまとめると以下のようになります。
- /d: コピー先に同じ名前のファイルが存在するときは、更新日が新しいファイルのみをコピーする
- /e: フォルダ内にファイルが存在しなくてもコピーする
- /c: コピー時のエラーを無視して処理を進める
- /y: 同じ名前のファイルが存在するとき、上書きの確認なしでコピーする
- /r: 読み取り専用属性のファイルに対しても上書きコピーする
この他にも「xcopy」コマンドにはたくさんのオプションがあります。「xcopy(より高度なコピー) -コマンド別解説-」に詳しいコマンド解説をしていますので、自分好みのオプションを探して指定するとよいでしょう。
コマンドプロンプト上でオプションについて知りたいときには、コマンドプロンプトに、
1 |
xcopy /? |
と入力してください。すると以下の図のようなオプションの一覧が表示されますので、気になったときはこのコマンドで確認するとよいでしょう。
これは、どのコマンドも共通です。
さて、では「第13章」フォルダを作って、バックアップバッチのテストをしてみましょう。「第13章」フォルダの下に、バッチファイル「backup_test.bat」を作成し、以下のコマンドを書いてください。
1 |
xcopy .\file .\backupfile /d /e /c /y /r |
続いて二つのフォルダ、「file」と「backupfile」フォルダを「第13章」フォルダの下に用意します。さらに「test.txt」という空ファイルを「file」フォルダの中に作成します。
【フォルダ構成】
第13章(フォルダ)
∟file(フォルダ)
∟test.txt
∟backupfile(フォルダ)
「test.txt」ファイルのバックアップをとるテストを行います。
バックアップを実行してみましょう。コマンドプロンプトを立ち上げて、「backup_test.bat」を実行してください。
実行後、「backupfile」の中を確認して「file」にあった「test.txt」ができていれば成功です。
通常、バックアップはハードディスクやUSBなどの外付けドライブにデータを保存しますので、本番でのバックアップバッチは以下のようになります。
1 2 3 |
@echo off xcopy C:\Users\username\Desktop\work F:\backup /d /e /c /y /r |
これを「backup.bat」として、保存しておきましょう。ただし、保存元や保存先のフォルダのパスは自分用に変更して下さい。
ここで注意すべきは、フォルダのパスを絶対パスで指定することです。そうすることで、どこにバッチファイルを置いていても実行することができます。「絶対パス」については「絶対パスと相対パス -コラム-」を参照してください。
これでバックアップを取るバッチファイルは完成です。バッチファイルをデスクトップにでも置いておけば、ダブルクリックするだけでいつでもバックアップを取ることができます。自動化する必要がなければ、このままでも十分使えます。
自動でバッチファイルを実行する
バッチファイルは完成しました。ここからは自動でバッチファイルを実行できるようにしましょう。そのためにはパソコン側のセッティングをする必要があります。
まずは、自動バッチ起動のテストを行います。
「auto_start.bat」という名のバッチファイルを「第13章」フォルダの下に作り、以下のように書き込んでください。
1 2 3 4 |
@echo off echo 自動バッチ起動のテスト成功! pause |
ここで、4行目の「pause」コマンドを必ず書くようにしてください。
これを自動で起動するよう設定してみます。画面左下の「スタート」から「プログラムとファイルの検索」欄に「タスク スケジューラ」と打ち込んで下さい。(※ここではwindows7を例に説明しています。他のバージョンについては、別途お調べ下さい。「タスク スケジューラ」が開ければオッケーです。)
すると、タスク スケジューラというプログラムが見つかるはずですので、それをクリックして起動すると以下のような画面が立ち上がります。
このタスク スケジューラを使うと、何日の何時何分になったら特定のバッチファイルを自動で起動するといった設定が可能になります。
起動した画面の「操作」タブから「タスクの作成」を選びます。
はじめは「全般」タブになっていると思うので、「名前」と「説明」を入力しましょう。今はテスト的に動作を確認するため、以下のようにします。
名前 → バッチ自動起動テスト
説明 → バッチ自動起動テストします。
その他は変更せず、「トリガー」タブに移ります。
「新規」ボタンを押して、設定欄で一回にチェックが入っているのを確認したら、開始時刻を現在時刻より少し先に設定します。ここでは今から五分後に設定しましたが、はじめての方は少し余裕を持って時刻を設定することをオススメします。
続いて、「操作」タブに移ってください。
「新規」ボタンを押して、操作欄がプログラムの開始になっていることを確認します。設定欄で「プログラム/スクリプト」に「参照」ボタンから作った「auto_start.bat」を指定します。
私の場合はこのようなパスになりました。
1 |
C:\Users\ide\Desktop\バッチ練習\第13章\auto_start.bat |
ここまでが完了したら、「OK」ボタンを押して「タスクの作成」画面に戻り、さらに「OK」ボタンで閉じます。
あとは、トリガーで指定した時刻になるのを待つだけです。指定時刻になって自動で「auto_start.bat」が実行されるか確認して下さい。
成功すれば、指定時刻にコマンドプロンプトが勝手に立ち上がり、「自動バッチ起動のテスト成功!」と表示されるはずです。
さて、このバッチファイルの自動起動とバックアップファイルを併用すると指定した時刻に勝手にバックアップを取ってくれるシステムが出来上がりそうです。
しかし、もう一つ考えなければいけないことがあります。それは、指定した時刻にパソコンの電源がついていなければいけないということです。
バックアップはなるべく自分がパソコンを使っていない夜中に行いたいものですが、タスクスケジューラを設定しただけでは、勝手にパソコンの電源を入れるところまではやってくれません。したがって、次節では自動でパソコンの電源を入れる設定をしていきましょう。
パソコンを自動で起動させる
パソコンを指定時刻に起動するにはBIOSという機能を使用します。BIOSのセットアップ画面を表示するには、パソコンを再起動します。そして、はじめのメーカーロゴ画面のとき、あるいは真っ黒な何も写っていない画面のときにある決まったキーを押す必要があります。
しかし、そのタイミングは一瞬であり、どのキーを押すかはパソコンによって違っています。どのキーを押すべきかは、一瞬表示されることもあるので集中して見つけましょう。(※これはパソコンによってそれぞれ違うため色々試すしかありません。)
私の経験では、キーボードの左上にある「F2」キーであることがもっとも多いように感じます。そうでなければ、「Delete」キーも試してみましょう。私の場合は、とにかく再起動して黒い画面になったら「F2」キーを押し続ければ以下のようなBIOS画面に切り替わりました。
はじめは「Main」タブになっていると思うので、これを「Power」タブに移動します。
操作方法は画面の下方に表示してあるので参考に操作して下さい。
まず、「Power」タグの「Auto Power On」を「Enabled」にします。そして、その下の「Auto Power On Mode」を切り替えます。
私は毎日自動起動していますので、「Every Day」としていますが、ここは自分がバックアップを取りたい頻度に設定して下さい。
そして、最後に「Auto Power On Time」の時間を設定します。私は夜中の三時五十分に設定しています。私が確実に寝ていて、パソコンを使用してない時間帯です。
ここまでの設定したら、「Exit」タブにいき、「Save Changes and Reset」を選択してBIOSセットアップ画面を終了します。
再起動になると思いますので、今度は通常通りwindowsが立ち上がるのを待ちましょう。
これで、指定した日時に自動でパソコンが起動するようになりました。
さて、すでにバックアップ用のバッチファイルは前節で作りましたが、少しだけ編集します。読者によってバックアップしたいフォルダもバックアップ場所も違いがありますが、いま「backup.bat」は以下のようになっていると思います。
1 2 3 |
@echo off xcopy C:\Users\COEL\Desktop\work F:\backup /d /e /c /y /r |
これを以下のように編集します。
1 2 3 4 5 |
@echo off xcopy C:\Users\COEL\Desktop\work F:\backup /d /e /c /y /r shutdown -s -t 60 |
5行目に「shutdown」コマンドを付け加えただけです。
これは、パソコンをシャットダウンするコマンドです(※「-s」はシャットダウンするためオプション)。つまり、バックアップを取り終わったら、パソコンの電源を落として終了というわけです。
「-t [数字]」は[数字]に指定した秒数だけシャットダウンするまでの待機時間をできます。ここでは60秒を指定して、バックアップが終わって直ぐにではなく、少し待機してから電源を切るようにしています。このような待機時間が必要かは分からないですが、安全策としてこのようにしています。
では、この「backup.bat」を自分の好みの場所に移動します。私はデスクトップに置いています。その理由は、自動実行とは別に好きなときにダブルクリックすればいつでもバックアップを取れるからです。パソコンをシャットダウンするときは、このバッチファイルをダブルクリックすれば、バックアップ後、電源を切ってくれます。
移動先で正常に動くかどうか確認のために、ダブルクリックをして一度実行してみるとよいでしょう。
正常に動作するのを確認したら、あとは立ち上がった後、自動でバックアップ用のバッチファイルを起動してやればよいです。本格的に「タスク スケジューラ」を設定していきましょう。流れは、前節の「自動でバッチファイルを実行する」で説明した通りです。
画面左下の「スタート」から「プログラムとファイルの検索」欄に「タスク スケジューラ」と打ち込んで起動します。
起動した画面の「操作」タブから「タスクの作成」を選びます。
「全般」タブで、「名前」と「説明」を入力しましょう。
今回は本番なので、以下のように設定しました。
名前 → バックアップ自動起動
説明 → バックアップバッチを自動起動する
その他は変更せず、「トリガー」タブに移ります。「新規」ボタンを押して、設定欄で「毎日」にチェックをいれます。お好みで、「毎週」や「毎月」を選んでもよいでしょう。
そして、開始時刻を設定します。私の場合は午前三時五十分にパソコンが立ち上がる設定にしましたので、その十分後の午前四時に設定しました。
続いて、「操作」タブの「新規」ボタンを押して、操作欄がプログラムの開始になっていることを確認します。設定欄で「プログラム/スクリプト」に「参照」ボタンから「backup.bat」を指定します。私の場合はこのようなパスになりました。
1 |
C:\Users\ide\Desktop\backup.bat |
完了したら、「OK」ボタンを押して「タスクの作成」画面に戻り、さらに「OK」ボタンで閉じ、準備完了です。
これですべての工程が終了しました。設定した時間になるとパソコンが立ち上がり、バックアップを取った後、再び電源が落ちるでしょう。これを確認するまでは不安な方は時間になったら、パソコンの前に座り、その一部始終を確認しましょう。
第13章のまとめ
本章では、自動でバックアップを取るシステムの構築を学びました。システム構築には、いくつかの手順があり少し複雑でしたが、まとめると以下の図のようになります。
【入門講義 第13章のまとめ】
自動バックアップシステムの手順
- その1 バックアップバッチを作成する。
- その2 「タスク スケジューラ」でバッチファイルを起動する時刻を設定する。
- その3 BIOSシステムを使用し、バッチ起動時刻の少し前にパソコンを立ち上げる。
ここで学んだことは、特にバックアップシステムだけのものではなく、毎日または毎週、定期的に行いたい作業を自動化することに応用できます。
なにか不明な点やうまくいかない場合は、「お問い合わせフォーム」からお気軽にお問い合わせ下さい。
次章では、バッチファイル内でバッチファイルを呼び出す方法を学びます。