先日作成した郵便番号の取込スクリプトで味をしめたというわけでもないのですが、いくつかのファイルのバックアップを自動で作成するようにしておこうと思います。
まずはデータベース関連から。
CSVファイルを吐き出す方法もよいかな~と思ったのですが、今回はmysqldumpを使用する方向で作業します。
最低限必要なデータベースは個人で使用しているモノとWordpress関連なんですが、ここはデータベース丸ごとバックアップを作成しておきます。(万が一DBそのものが破損してもいいように)
mysqldump -u root -pパスワード --all-database > mysql.sql
これでデータベース全てがmysql.sqlファイルにエクスポートされます。
エクスポート先はこの処理を行うユーザのカレントディレクトリ(その時の作業ディレクトリ)になりますが、今回作成するスクリプトはrootに実行させるので/root/mysql.sqlとして保存されます。
(データベースに戻す時はmysql -u root -pパスワード < sqlファイルのフルパス にて行う)
あとはバックアップを作成するディレクトリの選別を。
丸ごとバックアップをとってみたらどうか?と考えもしましたが一時ファイルなんかまでとる必要は全く無いわけで、いざという時に最低限サーバを復旧させることができるようにと考えた結果
- /etc(各種設定ファイルは必須かと)
- /home(ユーザのデータが入っているのでこれも)
- /var/log(障害発生時の原因がつかめるかもしれないし他にも情報満載)
- /root(管理者固有のファイルも必要でしょう)
の4つに絞ることにしました。
これをtarボールに纏めてかつgzip形式で圧縮してやることにします。
LIST="/etc /home /var/log /root"(追加したい場合は半角スペースを挟んで追記)
tar czvfP /var/bkup/backup.tar.gz $LIST
ちなみに変数:LISTにバックアップを作成したいディレクトリを記載、「tar」コマンドでファイルを一まとめにします。
tarの後に続くczvfPはオプション項目で頭から順に
- c:新規書庫を作成する
- z:gzip形式を使用(書庫作成なのでここでは圧縮)
- v:処理したファイルの一覧を表示
- f:指定したファイル名(ここではbackup.tar.gz)を使用
- P:ファイル名の先頭につく"/"を取り除かないで使用
という意味なんですって。
今まで深く考えずに使ってました(汗
あと、今回の書庫作成とは反対で解凍を行う際に
tar zxvf ~
なんてコマンドを使用するんですがこちらは
- z:gzip形式を使用(こちらは解凍)
- x:書庫からファイルを取り出す
- v:処理したファイルの一覧表示
- f:指定したファイル名(~部分)から取り出すよ
という意味になります。
今回は/var/bkup/というディレクトリを作成しておいてそこにbkup.tar.gzというバックアップファイルを作成する形をとりますのでまずはディレクトリを作りましょう。
sudo mkdir /var/bkup/
そして作成したディレクトリにバックアップを作成するように上記の一連の処理をスクリプトに書くと
#!/bin/bash
LIST="/etc /home /var/log /root"
DB_PASS="データベースのroot用パスワード"
mysql -u root -p$DB_PASS --all-database > mysql.sql
tar czvfP /var/bkup/bkup.tar.gz $LIST
exit
簡単でしょ♪
最後に
vi /etc/cron.d/auto_bkup
で新規ファイルを作成して
0 2 * * * root スクリプトのフルパス名
と書いたものを:wqで保存しておいて置くと毎日AM2:00に自動でバックアップを作成してくれるようになります。
こんな具合で必要なファイルを一纏めにして圧縮しておいて置くといざという時に役に立ってくれるかもしれません。
できればこれをサーバ上に置いておくだけでなく、クライアントにコピーして置けばマシンのトラブルなどでデータを読み出せなくなったりOSの再インストールを行うような羽目になっても対応できます。
ここでは端末上でバッチファイルを動かしてFTP経由にてダウンロードする方法を。
(もちろんFTPサーバの構築が必須ですが・・・)
まずはディレクトリを作成して適当な名前をつけます。(例えばbkup_dlとかなんとか)
続いて同じディレクトリにbkup_dl.txt(これも適当でよいです。要は分かりやすい名前ならOK)を作成して中身に
open FTPサーバ名
FTPユーザ名
パスワード
binary
get /var/bkup/bkup.tar.gz
quit
と記述します。
あとはメモ帳でもなんでもよいので
ftp -s:bkupdl.txt > bkupdl.log
と記述して「bkupdl.bat」とでも名前を付けたバッチファイルを作成します。
バッチファイルとテキストファイルを同じディレクトリにおいてバッチファイルをダブルクリックすればそのディレクトリ内にサーバで作成したbkup.tar.gzがダウンロードされ、その過程がbkupdl.logとして残ります。(ログは追記ではなく上書きになりますが。タイムスタンプを見ればいつバックアップのコピーをとったかすぐわかります)
バッチファイルのショートカットでも作成してスタートアップに放り込んでおけば端末を起動するたびにバックアップを勝手に取得してくれます。もっとも起動直後にバッチファイルを走らせるのは負荷のかかっている起動時のPCには辛い場合もあるかもしれませんので悪しからず・・・