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, ブログ

  関連記事

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

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

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

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

ショートコードが表示される
記事を抜粋表示したらショートコードまで表示されてしまった [WordPress]

[gallery ids=”10001″&#0 …

Google Analytics でアクセス解析できるQRコードの作成方法

うちの会社は仕事で出版業もやっているので、よく出版物とWEBを絡めた企画でQRコ …

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

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

「All in One WP Migration」でFTPが接続できない場合の対処方法

「All in One WP Migration」プラグインのFTP setti …

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

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

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

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

真っ白な画面
エラーメッセージ Warning: “continue” targeting switch is equivalent to “break”. が出てWordPress管理画面にログインできない

ある日突然、Wordpressで構築したサイト上に以下のエラーメッセージが表示さ …

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

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