ちょっと前の話になりますが、某ホスティングサーバーでサーバー上のデータとバックアップデータが削除されるという、大事件がありました。サーバー上のバックアップまでなくなったらお手上げです。
もしもサーバー上のデータがなくなったとしても、サイトのバックアップをローカルに保存しておけば、なんとか復旧できます。
そこで、今回はWEBサイトのファイルをすべてバックアップする方法とそれをスケジュール化して定期的にバックアップさせる方法をご紹介いたします。
事前準備
WEBサイトをバックアップするために、wgetと7zaというコマンドを使います。これらのコマンドは、Windowsに標準完備されていないので、以下よりダウンロードしたexeファイルを適当なフォルダに保存しておいてください。
WEBサイト全体をバックアップするためのコマンド
WEBサイト全体をバックアップするためのバッチファイルを作成します。テキストエディタで以下のようなコマンドを拡張子「.bat」で保存してください。
ren C:\SiteBackup\sitebackup.zip sitebackup1.zip del C:\SiteBackup\sitebackup1.zip C:\command\wget.exe --ftp-user=usernamehere --ftp-password=passwordhere --passive-ftp -P C:\WebSiteFile -r -l 0 -nH ftp://example.com/ C:\command\7za.exe a C:\WebSiteFile\sitebackup.zip C:\WebSiteFile\example.com rmdir /S /Q C:\WebSiteFile\example.com pause
では、コマンドの内容を細かく見ていきたいと思います。
ファイル名の変更
1行目では、「C:\SiteBackup\sitebackup.zip」というファイルを「sitebackup1.zip」というファイル名に変更しています。
ren C:\SiteBackup\sitebackup.zip sitebackup1.zip
後述しますが、WEBサイトのバックアップは「C:\SiteBackup\sitebackup.zip」というファイル名で圧縮して保存します。2回目以降のバックアップ時に同じファイル名が存在してしまうので、先にリネームしてこれを回避するという処理です。
ファイルの削除
2行目では、古いバックアップファイルを削除しています。
del C:\SiteBackup\sitebackup1.zip
1行目でリネームしたsitebackup1.zipを削除します。
今回の例ではバックアップファイルを1つだけ保持するような内容になっていますが、もっと多く保存したい場合は、1行目で行っているリネーム処理を何度か繰り返すようにします。例えば、3つは保持したいという時には、以下のような感じにします。
ren C:\SiteBackup\sitebackup.zip2 sitebackup3.zip ren C:\SiteBackup\sitebackup.zip1 sitebackup2.zip ren C:\SiteBackup\sitebackup.zip sitebackup1.zip del C:\SiteBackup\sitebackup3.zip
このようにすることで、「sitebackup.zip」「sitebackup1.zip」「sitebackup2.zip」の3つのバックアップが常に保存されることになり、一番古いファイルは削除されます。
FTPサーバーへのアクセス
3行目の部分でFTPサーバーへアクセスします。
C:\command\wget.exe --ftp-user=usernamehere --ftp-password=passwordhere --passive-ftp -P C:\WebSiteFile -r -l 0 -nH ftp://example.com/
「C:\command\wget.exe」でwgetコマンドを呼び出しています。パスはwget.exeを保存したフォルダに変えてください。
「usernamehere」のところにFTPユーザー名を、「passwordhere」のところにパスワードを入れてください。それから、「C:\WebsiteFile」は、ファイルの保存先です。最後の「ftp://example.com」がFTPサーバーのアドレスになります。それぞれ自分の環境に合わせて変更してください。
ファイルの圧縮
4行目の部分でダウンロードしたファイルを圧縮します。これはやってもやらなくてもいいですが、ディスク容量を食うので圧縮した方がいいでしょう。
C:\command\7za.exe a C:\WebSiteFile\sitebackup.zip C:\WebSiteFile\example.com
「C:\command\7za.exe」で7zaコマンドを呼び出しています。パスは7za.exeを保存したフォルダに変えてください。
「C:\WebSiteFile\example.com」というフォルダを「C:\WebSiteFile\sitebackup.zip」というファイル名で圧縮するという意味になります。フォルダ名や圧縮ファイル名は自分の環境に合わせて変更してください。
元フォルダの削除
圧縮が完了したら、圧縮前のフォルダは必要ないので、削除します。削除処理を行っているのが、5行目の部分になります。
rmdir /S /Q C:\WebSiteFile\example.com
圧縮前のフォルダ名は環境に合わせて変更してください。
pause
コマンドが開始されるとコマンドプロンプトが開き、コマンドが完了するとコマンドプロンプトが自動的に閉じます。最後にpauseを記述しておくことで、コマンドが完了してもコマンドプロンプトを開いたままにすることができます。
何かエラーが発生していたりしても、コマンドプロンプトが閉じてしまうと確認できないので、ちゃんと完了したか確認するためにpauseしておきます。
バッチファイルが作成できたら、一度ファイルを実行してちゃんと動くか確認しておきましょう。
バックアップのスケジュール化
バッチファイルができたら、今度はバックアップをスケジュール化しましょう。スケジュール化は簡単で、タスクスケジューラにセットするだけです。
1. [スタート] – [すべてのプログラム] – [アクセサリ] – [システムツール] – [タスクスケジューラ] を開きます。
2. 「タスクスケジューラライブラリ」を開き、[タスクの作成]をクリックします。
3. 「全般」タブでタスクの名前を入力します。
4. 「トリガ」タブを開き、[新規]をクリックします。
5. どれくらいの頻度でバックアップするか設定したら、[OK]をクリックしてトリガを保存します。
6. 「操作」タブで[新規]をクリックします。
7. 「操作」では[プログラムの開始]を選択します。
8. [参照]をクリックし、作成したバックアップ用のバッチファイルを指定します。
9. バッチファイルを指定したら、[OK]をクリックして操作を保存します。
10. ここまで設定できたら、[OK] をクリックしてタスクを保存します。
このようにタスクを設定しておくことで、自動的にWEBサイトのバックアップが行われるようになります。
あとがき
バッチファイルを作成したことがない方には、ハードルが高そうに思えるかもしれませんが、ほとんど書いてあるコードをコピペで作成することができます。
バックアップは大切なことなので、ぜひローカルにも保存しておくことをおすすめします。私は、バックアップの保存先をDropboxフォルダにして、2重の対策をしています。