S-wander

広告代理店SEが考える成果を出すためのウェブ制作メモ

シェルと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含む多彩な機能があり動作も安定してコスパの良いエックスサーバーをよく使っています。

サーバー選びの参考にどうぞ。


 - ブログ, WEB

  関連記事

no image
ハッシュタグを指定してInstagramの写真をブログに表示する。

WordPressサイトのRSSを自分のブログへ表示する方法を応用して、 特定の …

WEB制作にもつかえるバージョン管理ツール

バージョン管理のすすめ バージョン管理とは、コンピュータ上で作成、編集されるファ …

SourceTreeとBitbucketを使ってWordPressテーマをバージョン管理

できるコーダーはバージョン管理をしよう WordPressでサイトを制作するとき …

no image
WordPressサイトのRSSを自分のブログへ表示する方法

RSSを表示したい箇所に以下のコードを挿入。 <?php $RSSpath …

no image
Xoopsサイトのサーバー引っ越し

Xoopsで作られた社内サイトがある日突然閲覧できなくなった。 どうやらレンタル …

WEBデザイナーを目指す人に知ってもらいたい WEBデザインの5W1H

これからWEBデザイナーを目指したい、またはWEBデザインを勉強中の人たちに向け …

no image
Instagramの写真をRSSでギャラリー表示する方法

最近巷で流行っているInstagram。 Instagramって何?っていうのは …

画像にbnrやbannerといったクラスやファイル名を付けるのは注意

ホームページを作るときにバナー設置スペースや、バナー画像に対してよくクラス名もし …

Cake PHP をインストールする方法

Cake PHPを入手する まずは Cake phpをダウンロードします。 Ca …

Basic認証をURL化して、スマホでのパスワード入力を省略する方法

WEB制作をしていると、最近はパソコンだけでなくスマホでも確認しなくてはならない …