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


投稿日:2012年12月29日
  • 3
  • 11



アクセスするだけで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圧縮してバックアップする方法 知らないうちにロリポップ!にバックドアが仕掛けられていた!

おすすめの記事

WordPressの新・旧ループからカスタムクエリ・アーカイブまで徹底解説

WordPressの新・旧ループからカスタムクエリ・アーカイブまで徹…

PukiWikiで5段階評価を付けるプラグインを作成しました

PukiWikiで5段階評価を付けるプラグインを作成しました

DNS Amp攻撃の解説と、踏み台にされないためのBIND DNSの設定

DNS Amp攻撃の解説と、踏み台にされないためのBIND DNSの設定

ページ編集の手間を劇的に減らす、Custom Field Templateでカスタムフィールドを作る方法

ページ編集の手間を劇的に減らす、Custom Field Templateでカス…

WordPressでアイキャッチ画像をサムネイルとして一覧ページに表示する方法

WordPressでアイキャッチ画像をサムネイルとして一覧ページに表…

rsyslogを利用したログファイル作成と、logrotateを利用したログのローテーション

rsyslogを利用したログファイル作成と、logrotateを利用したロ…

シンプルなスパムコメント対策プラグイン「Simple AntiSpam」を作成しました

シンプルなスパムコメント対策プラグイン「Simple AntiSpam」を…

そのサイト、WordPressじゃなくてWixで十分じゃない?

そのサイト、WordPressじゃなくてWixで十分じゃない?


いただいたコメントなど

  1. tyomo037 のコメント:

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

コメントを残す

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

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください