共有レンタルサーバー

レンタルサーバーのデータを全自動で定時バックアップする

レンタルサーバーのデータを全自動で定時バックアップする方法をまとめました。SSHが使えるレンタルサーバーと使えないレンタルサーバーの両方に対応しています。

SSHが使えるサーバー

SSHが使えるレンタルサーバーなら、bashが使えるはずなので、bashスクリプトを作成して、cronで定時で回すのが確実です。

下記は、レンタルサーバーの公開ディレクトリをバックアップするbashスクリプトです。

#!/bin/bash

BKDIR="バックアップ先のフルパス";
SRCDIRS="バックアップ元のフルパス(先頭の / は外す)";
EXCDIR="除外ディレクトリ、対象ディレクトリとバックアップ先が同じなら除外する"
DAYS="30" # バックアップ日数。単位は日。

# バックアップ先がなければ作成
[ ! -d ${BKDIR} ] && mkdir -p ${BKDIR};

# 実行
cd /;
tar -zcvf ${BKDIR}/`date +%Y%m%d`.tar.gz ${SRCDIRS}  --exclude ${EXCDIR} 1> /dev/null;

# 設定日数より古いバックアップは削除
find ${BKDIR} -type f -mtime +${DAYS} -exec rm -f {} \;

今回は、このbashスクリプトを「web_backup.sh」というファイルで保存します。

保存したら、bashスクリプトに実行権限を与えます。

chmod +x web_backup.sh

テストしてみます。

bash web_backup.sh

バックアップファイルが出来ていれば問題なしです。

SSHが使えないサーバー

SSHが使えないサーバーはbashスクリプトが使えない可能性があるのでPHPを使います。

<?php
$days = '60'; // バックアップ日数。単位は日。
$bk_dir = 'バックアップ先のフルパス';
$src_dir = 'バックアップ元のフルパス(先頭の / は外す)';
$ex_dir = '除外ディレクトリ';

# 実行
system( "tar -zcvf ".$bk_dir."/`date +%Y%m%d`.tar.gz ".src_dir." --exclude ".$ex_dir." 1> /dev/null;);

# 設定日数より古いバックアップは削除
system( "find }".$bk_dir." -type f -mtime +".$days." -exec rm -f {} \;" );

基本的には、先ほどのbashスクリプトをphpのsystemコマンドで実行しているだけです。

ファイルを作成したら、FTPクライアントでアップロードして、web_backup.phpに実行権限を与えます。

テストしてみます。

php web_backup.php

バックアップが出来ていればOKです。

cronで定時実行する

スクリプトが用意できたら、レンタルサーバーの管理画面からcronを設定します。cronの設定方法はレンタルサーバーごとに違うので、利用しているレンタルサーバーのマニュアルを確認しましょう。

時間になったら、バックアップ先のディレクトリにファイルが出来ているかを確認します。出来ていれば成功です。失敗している場合は、cronのログを見れれば良いのですが、ログが取れないレンタルサーバーもあるので、その際は設定をcron見直してみましょう。

運用の目安

レンタルサーバーの場合、負荷をかけると同居している他のユーザーに迷惑がかかるので、ファイル数にもよりますが最短でも10分間隔くらいが良いでしょう。

また、バックアップ日数は長すぎるとレンタルサーバーの使用容量を超えてしまうので、できれば30日くらい、ファイルサイズが大きいなら14日くらいがちょうど良いかと思います。

可能ならクラウドにもバックアップを用意しよう

今回作成したスクリプトは、「レンタルサーバーのデータ」を「レンタルサーバーの中に」バックアップしているだけなので、レンタルサーバーが落ちたり、誤って削除してしまうリスクがあるため、完璧ではありません。

リスクをさらに軽減するなら、クラウドストレージにも同時にバックアップすると良いでしょう。

定番はAWSのS3ですが、Nextcloudと組み合わせるとcurlでPUTするだけで簡単にアップロードができるので、より便利です。


レンタルサーバーのデータを全自動で定時バックアップする方法をみてきました。

今回の方法だと、レンタルサーバーの標準バックアップ機能よりも細かく設定ができるので、サーバー内の容量が許す範囲内で細かくバックアップを取っておくと、安心してレンタルサーバーが使えます。


価格は記載がある場合を除き、すべて税抜きです。

この記事の関連キーワード

共有レンタルサーバーの記事