シェルとCronを使って簡単自動バックアップ
2016/09/07
万が一の時のことを考えてサイトのバックアップは定期的に取らなくてはならないですよね。
でも、毎週、毎月、ファイルをFTPダウンロードして、zipで固めて、ローカルに保存、みたいな単純作業を
管理しているサイトすべてやるのは大変です。
利用しているレンタルサーバーによっては、バックアップオプションとかありますが、
大抵は有料だったり、古いデータは復旧できなかったり、と色々不都合もあります。
wordpressであれば、backWPupなどのプラグインを使って簡単に自動バックアップを取れますけど、
wordpressを使っていないサイトの場合は他の手段を取ることになります。
Cronでバックアップを自動で実行
Cronとは、決まった時間に自動でスクリプトを実行してくれるプログラムのことです。
つまり、バックアップを取るスクリプトをCronで決まった時間に実行させれば、
自動で定期バックアップが取れるということです。
バックアップ用スクリプトを作る
やりたいことは以下の通り。
- /home/xxxx1/example.com/public_html の中身を丸ごとバックアップして、/home/xxxx1/backup/tmp/ に保存する。
- なお、90日を経過したバックアップファイルは削除する。
- さらにサーバーがダウンしたときのことを考えて、別サーバーの /backup/ ディレクトリに保存する。
早速コピペ用スクリプト。
#!/bin/bash
target='example.com'
# バックアップファイルを何日分残しておくか
period='+90'
# バックアップファイルを保存するディレクトリ
dirpath='/home/xxxx1/backup/tmp/'$target
#バックアップ元フォルダ
backupfolder="/home/xxxx1/"$target"/public_html"
# ファイル名を定義(※ファイル名で日付がわかるようにしておきます)
mydate=`date +%y%m%d%H%M%S`
filename=$target"_bkup_$mydate.tar.gz"
#backup実行
tar -zcvf $dirpath/$filename -C / $backupfolder
# パーミッション変更
chmod 700 $dirpath/$filename
# 古いバックアップファイルを削除
find $dirpath -type f -daystart -mtime $period -exec rm {} \;
# バックアップファイルを別のサーバーへ転送する
ftp -n << EOF
open example2.com
user yourusername yourpassword
lcd $dirpath
cd /backup/
bynary
prompt
mput $filename
bye
EOF
上記スクリプトを実行する際は、あらかじめ「バックアップ保存先ディレクトリ」と「バックアップ転送先ディレクトリ」を作成しておく必要があります。
転送先ディレクトリの指定は、利用するFTPアカウントのルートパスに注意して指定。
ディレクトリパスやFTPユーザー名、パスワードなどは自分の環境に合わせて変更してください。
作ったシェルスクリプトを任意の場所へアップロード
ここでは、/home/xxxx1/sh/backup.sh にアップロード。
また、パーミッションを755など実行可能権限にしておく。
Cronの設定
レンタルサーバーの場合、管理画面からCron設定という項目があるはずなので、実行する時間とスクリプトを指定します。
例)毎月1日0:00に/home/xxxx1/sh/backup.sh を実行する場合
分 | 時間 | 日 | 月 | 曜日 | コマンド(実行するスクリプト) |
---|---|---|---|---|---|
0 | 0 | 1 | * | * | /home/xxxx1/sh/backup.sh |
これで、自動バックアップのできあがりです!
まとめ
サーバーを選ぶ際はデータベースが使えるかPHPのバージョンはいくつかとかだけでなく、ちゃんとバックアップを取れる環境にあるのかということも大事ですよね。
そういう意味ではCronが使えるレンタルサーバーを選ぶのも良いのではないでしょうか。
私自身はCron含む多彩な機能があり動作も安定してコスパの良いエックスサーバーをよく使っています。
関連記事
-
SourceTreeとBitbucketを使ってWordPressテーマをバージョン管理
できるコーダーはバージョン管理をしよう WordPressでサイトを制作するとき …
-
Google Analytics でアクセス解析できるQRコードの作成方法
うちの会社は仕事で出版業もやっているので、よく出版物とWEBを絡めた企画でQRコ …
-
「All in One WP Migration」でFTPが接続できない場合の対処方法
「All in One WP Migration」プラグインのFTP setti …
-
エラーメッセージ Warning: “continue” targeting switch is equivalent to “break”. が出てWordPress管理画面にログインできない
ある日突然、Wordpressで構築したサイト上に以下のエラーメッセージが表示さ …
-
Xoopsサイトのサーバー引っ越し
Xoopsで作られた社内サイトがある日突然閲覧できなくなった。 どうやらレンタル …
-
Instagramの写真をRSSでギャラリー表示する方法
最近巷で流行っているInstagram。 Instagramって何?っていうのは …
-
画像にbnrやbannerといったクラスやファイル名を付けるのは注意
ホームページを作るときにバナー設置スペースや、バナー画像に対してよくクラス名もし …
-
記事を抜粋表示したらショートコードまで表示されてしまった [WordPress]
[gallery ids=”10001″� …
-
WordPressサイトのRSSを自分のブログへ表示する方法
RSSを表示したい箇所に以下のコードを挿入。 <?php $RSSpath …
-
WEBデザイナーを目指す人に知ってもらいたい WEBデザインの5W1H
これからWEBデザイナーを目指したい、またはWEBデザインを勉強中の人たちに向け …