LinuxのWebサーバ内容を外付けHDDへ定期バックアップする

LinuxのWebサーバ内容を外付けHDDへ定期バックアップする

VineLinuxで立てたWebサーバにHDDを認識させて、cronを使って1日1回自動でバックアップをするように設定したメモです。


環境

このような環境です。Apache2のドキュメントルート(/var/www/html)と、WordPressの他にもDBとやりとりしてるモノがあるので、MySQLの内容をバックアップしたいなーと。

HDDをマウント

こちらのとおりにできました。接続して、フォーマットして、マウント。マウント先は /mnt/backup としておきます。

Linux起動時に自動でマウントさせる

再起動したときも自動的にマウントさせたいので、/etc/fstab に

/dev/sdb1 /mnt/backup ext4 defaults 0 0

と、最終行に追記。

こちらを参考にさせていただきました

バックアップする

まずは手動で動くかどうか。

Apache2のドキュメントルート

こちらは簡単。ファイル名を html.tar という名前にするとして、コマンドライン端末で

tar cvf /mnt/backup/html.tar /var/www/html

このように書いて、書庫ファイルとしてHDDへバックアップ。

MySQL

こちらを参考にさせていただき、稼働させたままだと難しそうだけど、1回停止するのが良さそう。24時間稼働させておく必要はないので、使われる可能性が一番低い朝方に 停止 → バックアップ → 起動 にしてみよう!

/etc/init.d/mysqld stop
tar cvf /mnt/EXT_HDD/backup/mysql.tar /var/lib/mysql
/etc/init.d/mysqld start

ファイル名は mysql.tar にして、このように。

MySQLは設定ファイルなどを起動時に作成し停止時に削除するので、この方法だとバックアップファイルと稼働時のファイルが異なります。バックアップを戻す時は、必ずMySQLを停止させてからにしないとえらいことに…((└(:3」┌)┘)) 実際やってしまってMySQLが動かなくなり、しゅ、しゅうふく…!とアワアワしましたが、apt-get reinstall というコマンドで再インストールしたらまた動くようになりましたメモ。

シェルスクリプトを作る

さて、手動でのバックアップは出来たので、今度はこれをひとつのプログラムにまとめてみます。任意の場所(わたしは /etc/var/www/html にしちゃいました)に bk.sh というファイル名のシェルスクリプトを作っておいて、

#!/bin/sh
TODAY=`date '+%F'`
YDAY=`date -d '14 days ago' '+%F'`
tar cvf /mnt/EXT_HDD/backup/$TODAY-html.tar /var/www/html
/etc/init.d/mysql stop
tar cvf /mnt/EXT_HDD/backup/$TODAY-mysql.tar /var/lib/mysql
/etc/init.d/mysql start
rm /mnt/EXT_HDD/backup/$YDAY-html.tar
rm /mnt/EXT_HDD/backup/$YDAY-mysql.tar

2行目で本日の日付を取得して、4~7行目で日付をつけたファイル名でバックアップしています。その後、14日(2週間)前の日付のバックアップファイルを削除する、という内容も書いています。

「`」という記号の打ち方がわからなくて調べましたw Shift + @ なんですね!「’」とか「”」以外にも括る記号ってあるんですねー、初めて使いました!

今度はコマンドライン端末から、

chmod 777 /var/www/html/bk.sh

実行権限を変更します。

/var/www/html/bk.sh

試しに走らせてみると、ちゃんと動きました!

cronを使って指定時間にシェルスクリプトを実行する

cronはデフォルトで起動していたようなので、コマンドライン端末で

crontab -e

と打つと、エディタが起動してcronの設定ファイルに書き込めるので

0 4 * * * /var/www/html/bk.sh

と、書けば毎朝4時に実行してくれる、はず…。えっと、保存…。保存とかのコマンドが全然わからなくて四苦八苦しましたw 「ZZ」が保存して終了とか!!((└(:3」┌)┘))

以上です!いまのところこれで動いています。

公開日:2014/06/23

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)

YouTubeでQ&Aコンテンツを企画しています

運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。