ロリポップ!でWebサイトのデータをzip圧縮してバックアップする方法


投稿日:2012年12月29日
  • 6
  • 0



アクセスするだけでWebサイトを丸々バックアップ

このブログは「レンタルサーバのロリポップ!」を利用していますが、デフォルトでファイルのバックアップツールが用意されていません。

そこで今回「アクセスするだけでWebサイトのデータをzipに圧縮して保存する」PHPのコードを書きました。


バックアップ用のPHPを作成

まずはテキストエディタへ下記のコードをコピー・ペーストしてください。

<?php

set_time_limit(60);//圧縮するファイルが多くて60秒でタイムアウトする場合は時間を伸ばしてください

$backup_dir = "./example";//バックアップするディレクトリを指定
$new_file = "example.zip";//zipファイルのファイル名を指定
system("zip -r $new_file $backup_dir > /dev/null");//zipファイルを生成。ログを出力しないようにする。
//ファイルをダウンロード
header('Content-Disposition: attachment; filename="'.basename($new_file).'"');
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.filesize($new_file));
readfile($new_file);

@unlink($new_file);//ファイルをダウンロード後サーバから削除

?>

変更点は以下の2点です。

5行目example」をサイトの「公開 ( アップロード ) フォルダ」名に変更

6行目example.zip」をダウンロードするzipファイル名に変更

変更できたら好きな名前(backup_exampleなど)にして、ロリポップのルートディレクトリ(一番上のディレクトリ)にアップロードしてください。


ApacheのBasic認証でアクセス規制する方法

上のファイルをアップロードしてアクセスするだけでバックアップできますが、このままだと誰でもバックアップ用のファイルにアクセスできます。zip圧縮はサーバへの負荷が高いため、悪意を持ってアクサスされた場合サーバを追い出される危険性があります。

かといってバックアップするたびにアップロードし直すのは手間がかかります。そこでベーシック認証を利用して、簡単なアクセス制限をかけます。

「.htaccess」の内容

まずは「.htaccess」でアクセスを規制するファイル名を指定します。

.(ドット)」から始まるファイル作成するには手間がかかるため、「hoge.htaccess」と名前を付けて、FTPでサーバにアップロードしてから、サーバ上でリネームしてください。既にサーバに「.htaccess」が存在する場合はダウンロードして以下のコードを追記してください。
AuthName "Input Your Name And Password"
AuthUserFile /home/users/1/lolipop.jp-000000000000000/web/.htpasswd
AuthType Basic

<Files ~ "^backup_example\.php$">
require	valid-user
</Files>

変更点は2点

2行目/home/users/1/lolipop.jp-000000000000000/web/」を自分のサイトに合わせて変更します。ロリポップ!のユーザー専用ページヘログインして「ツール > アカウント情報」をクリック。「フルパス」の欄にパスが記載されています。

4行目backup_example」を上で保存したphpのファイル名に変更。サイトごとに複数のphpを配置した場合は「^backup_(hoge|huga)\.php$」のようにすれば1度に複数のファイルにアクセス規制をかけられます。

編集が終わったらphpと同じくルートディレクトリへアップロードして保存します。

「.htpasswd」の内容

.htaccess」でアクセス規制するファイル名を指定したので、今度は「.htpasswd」で許可するユーザー名とパスワードを指定します。

hoge:jdXcAKNoYpJ5M

ユーザー名とパスワードの組み合わせは「こちらのサイト」で自動生成できます。

左のメニューより「ベーシック認証 (B)」をクリック。「ユーザ名」「パスワード」を入力し「.htpasswdを作成」ボタンをクリック。すると「.htpasswd」の欄にIDとパスワードが表示されるので、コピー・ペーストします。

こちらも編集が終わったらルートディレクトリへアップロードしてください。

これで、ルートディレクトリにバックアップ用の「backup_example.php」と、アクセス規制用の「.htaccess」と「.htpasswd」がアップロードされていると思います。


バックアップを実行

先ほど開いたロリポップ!のユーザー専用ページで「アカウント情報」を開き「ロリポップ!のドメイン」をブラウザのアドレス欄にコピー・ペースト。ペーストしたURLの後にアップロードしたphpファイルの名前を入力します。

例:「http://00000000000000.lolipop.jp/hoge.php

すると「認証が必要」というウィンドウが出るので、先ほど設定したIDとパスワードを入力します。(「.htpasswd」用のコードを生成した際にWebサイトで入力したIDとパスワードです。画像はChromeのもの。)

圧縮後のファイルが100MB程度なら遅くても1分程度でダウンロードが開始されると思います。

上手く動作したらURLをブックマークに登録しておけば、バックアップしたいときにアクセスすれば自動でzipファイルに圧縮して、ダウンロードすることができます。


うまくいかない場合の対処

上手く動作しない場合はPHPが動作しないのか、アクセス規制が上手く動作しないのか問題を切り分けると原因を究明しやすくなります。

PHPが動作しない場合

タイムアウトする場合

バックアップするファイルサイズが大きいとタイムアウトする場合があります。その場合はPHPファイルの「set_time_limit(60)」の時間を増やしてください。

セーフモードがOffになっているかチェック

ロリポップ!の設定でPHPのセーフモードがONだと上手く動作しないかもしれません。
ユーザー専用ページから「webツール > PHP設定」をクリックします。

ページ中程にある「safe_modeの項目」を「Off」に変更してページ下部の「php.iniを変更する」ボタンをクリック。

「バックアップするディレクトリを指定」が正しいかチェック

独自ドメインの設定で指定したディレクトリ名が正しく入力されているか確認。

認証がうまくいかない場合のチェック

.htaccess」で指定したフルパスや、phpのファイル名が間違っていないかチェック。

.ptpasswd」に「パスワード生成ツール」で作成したパスワードを入力しているかチェック。
(hogeユーザーに0123というパスワードを指定する場合、プレーンな状態で「hoge:0123」と入力しても認証できません。)


ロリポップ!で利用していると冒頭で書きましたが、PHPの使えるほとんどのレンタルサーバで動作します。サーバの環境に合わせて変更してください。
WordPressなどデータベースと連動したシステムを利用している場合は、データベースのバックアップも忘れずに。


現在のページを共有する



現在のページに関連する記事

ロリポップ!でWebサイトのデータをzip圧縮してバックアップする方法 ロリポップ!から「不正なアクセスを検知いたしました」というメールが届いた
WordPressをインストールしたら初めに設定する項目 WordPressをインストールしたら初めに設定する項目
ロリポップ!でWebサイトのデータをzip圧縮してバックアップする方法 WordPressでpathやURLを取得するためのタグと出力例まとめ
ロリポップ!でWebサイトのデータをzip圧縮してバックアップする方法 WordPress公式テーマTwenty Tenを子テーマでレスポンシブWebデザインに変更
ロリポップ!でWebサイトのデータをzip圧縮してバックアップする方法 Apacheで拡張子が「.html」のファイル内でPHPを実行する方法
ロリポップ!でWebサイトのデータをzip圧縮してバックアップする方法 これ以上ないくらい簡単な例から学ぶ、レスポンシブwebデザインの作り方
ロリポップ!でWebサイトのデータをzip圧縮してバックアップする方法 知らないうちにロリポップ!にバックドアが仕掛けられていた!

おすすめの記事

全く新しい決済サービスPayPal.Meの導入と使い方を解説

全く新しい決済サービスPayPal.Meの導入と使い方を解説

サーバで管理していたWordPressをローカル環境に移行する方法

サーバで管理していたWordPressをローカル環境に移行する方法

iptablesで設定したパケットフィルタリングが正しく動作しているかテスト

iptablesで設定したパケットフィルタリングが正しく動作してい…

作業効率を飛躍的に向上させる!実務で使うIllustratorのショートカット一覧

作業効率を飛躍的に向上させる!実務で使うIllustratorのショー…

W3 Total Cacheの設定を通して学ぶ、WordPressを高速化するキャッシュの仕組み

W3 Total Cacheの設定を通して学ぶ、WordPressを高速化するキャ…

Web制作の仕組みを根底から覆すかもしれないWix ADIの人工知能

Web制作の仕組みを根底から覆すかもしれないWix ADIの人工知能

Windows 10を32bit版から64bit版に変更する方法

Windows 10を32bit版から64bit版に変更する方法

初めてでも理解できるようになる「Firefox機能拡張の開発」

初めてでも理解できるようになる「Firefox機能拡張の開発」


いただいたコメントなど

  1. tyomo037 のコメント:

    非常に役に立ちました。
    どうも有り難うござくぃました。

コメントを残す

コメントは認証制のため、すぐには反映されません。

プログラミングに関する質問は「日本語でプログラミングの悩みを解決するQ&Aサイト sukegra」をご利用ください。