blogデータバックアップ

これまでBackWPupでデータベースもデータ本体も同時にバックアップしていたのですが、写真データなどが一気に増えたこともあり、データ本体+データベースのバックアップサイズが2GBを越えてしまい、BackWPupでバックアップが取れなくなってしまいました(サイズオーバーらしい)。
そこでBackWPupはデータベースのみのバックアップに切り替え、データはシェルスクリプトなどを使って別途バックアップを取ることに。

ちょうど古~~~いIDE接続のHDDが手元にあったので(しかもナイスなことにUSB外付けキットも!)、ならこれをサーバに取り付けてバックアップ先のドライブとしてマウントさせてしまうことに。

USB外付けキットのHDDをつないだら電源を入れ、dmsgでHDDを認識していることを確認。
既にUSBのHDDがついているため、新しくつないだこれは/dev/sdbとして認識されていることを確認しましたので、パーティションを作成しなおしてファイルシステムを作成して・・・となるのですが、その辺は割愛(fdiskとmkfsですね)。
一点忘れてしまいがちなのが、/etc/fstabに/dev/sdb1でオートマウントさせるように記述すると、場合によっては再起動時などにデバイスの認識順番が変わってしまい、別のメディアが/dev/sdb1として認識される可能性があること。

そこでディスク(というか、パーティション?)にラベルをつけて管理します。

# e2label /dev/sdb1 LABELNAME

とし、/etc/fstabにも

/dev/sdb1 mountpoint ・・・
ではなく、
LABEL=LABELNAME mountpoint・・・
で記述します。

これで起動時のマウントポイント問題はクリアとなりました。

次はBLOGデータのバックアップについてです。
データベースの方はBackWPupの保存先ファイル(のパス)を変更することでクリアですが、データその物のバックアップをどうするか、です。
バックアップファイルの作成それ自体は

# tar zcvf hogehoge.tar.gz /blogdata/

でいいのですが、これだといつバックアップされたものなのかをls -lしないと分からないですし、そもそもこれだけでは常に古いバックアップデータを上書きすることで新しいバックアップを作成することになってしまいます(定期的に自動実行させる予定なので)。
さすがにそれは危険・・・。

ということで、バックアップデータのファイル名に、日付データを付与することにしました。

# vi backup.sh
#!/bin/bash
TODAY=`date ‘+%F’`
tar zcf hogehoge.$TODAY.tar.gz /blog/data/

でbackup.shというシェルスクリプトを作成し、まず実行してみます。

# sh backup.sh

作成されたファイル(バックアップデータ)を見ると、ちゃんと
hogehoge.2015-03-25.tar.gz
という、日付データ(date関数で取り出される日付)が含まれた名前がつけられていることを確認。

ところが、このシェルスクリプトを実行すると、

「tar: メンバ名から先頭の `/’ を取り除きます」

というエラーっぽいメッセージが表示されてしまいました(表示があっても、ファイル自体はきちんと作成されます)。

これを調べてみると。

どうやら、tarの第2引数でディレクトリを指定したとき、絶対パスで指定するとこのメッセージが表示されるらしいです。

例えば、/foo/bar/hoge/というディレクトリを圧縮するために

# tar zcvf hogehoge.tar.gz /foo/bar/hoge/

で圧縮してしまうと、これを解凍したときに

# tar zxvf hogehoge.tar.gz

カレントディレクトリに/foo/bar/hoge/ディレクトリが作成されてしまうということです。
欲しいのは/foo/bar/以下にある、hogeディレクトリのみなので、解凍した時にもこのhogeディレクトリだけを取り出せるようにすれば、先のエラーっぽいメッセージが表示されなくなるみたいです。

そこで、圧縮する時のコマンドを次のように変更。

# tar zcvf hogehoge.tar.gz -C /foo/bar/ hoge

-Cオプションで(第2引数の)/foo/bar/からの相対パスの指定とすることができる(らしいの)です。
なので、上記例文での/foo/bar/とhogeとの間にはスペースが入っています。
hogeは言うなれば第3引数ということですね。

# vi backup.sh
#!/bin/bash
TODAY=`date ‘+%F’`
tar zcf hogehoge.$TODAY.tar.gz -C /blog/ data

そこでこの様にbackup.shを書き換えます。
これで実行すると、先のエラーが表示されること無く
hogehoge.2015-03-25.tar.gz
が作成されました。

一日のうちに何度もバックアップを作成する必要はありません。データベースのバックアップが毎週の設定になっているはずなので、それに合わせてデータの方も定期的にバックアップを取るようにします。
cronを使いますが、それはまた今度にしましょう(笑)

楽しみは先にとっておかないと、ね!(^-^)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)