Google Sitesについてはこちらで触れましたが、当社では社員間のコミュニケーションのツールのひとつとして活用しています。
そのサイトは社員のみが利用できる非公開のサイトとして運用しているのですが、今回はそのバックアップを取った際のメモです。
2009/09/28注記:Googleよりツールが公開されましたので、本記事に記載したノウハウはGoogle Sitesのバックアップには必要なくなりました。こちらの記事にまとめましたので、ご覧ください。
結論から言うと、(現時点の)GoogleSitesにはバックアップ&リストアの機能がないので、wgetといったWebサイトのローカルコピーを作るソフトを使う必要があります。
リストアの手段はないのですが、Googleがファイルを全部失くしてしまったり、自分たちがコンテンツを全部消すようなオペレーションミスをすることはそんなにないと思うので、
いざというときは、ひとつひとつのコンテンツを再投稿すればよいかな、ということで。
で、今回のバックアップのキモは、いかにして、非公開の(ログインが必要な)サイトのコピーを取得するか、という点にあります。
ログインしたときの情報はブラウザにCookieという情報で保存される場合が多いので、ブラウザでログインした後にその情報を取得して、バックアップソフトにそれを適用することになります。
大雑把な手順を言うと、
という流れになります。
※InternetExplorer(IE)でもよい気がしますが、私の環境のIE7のCookieファイルエクスポート機能で出力したCookieファイルではうまくいかなかったので。
以下、手順の詳細を書きます。
事前準備
- Firefox(Ver3.0.11 すでにPCにインストールされている前提です)にCookieファイル出力プラグインを入れる。
- WebサイトのコピーソフトをPCにインストールする。
Export Cookiesをインストール。Firefoxで左記のリンク先のサイトを開き指示に従えばインストールできます。
ちなみに、古いバージョンのFirefoxではCookieがそのままテキストファイルで保存されていたようですが、現在ではsqliteのdbファイルになっているようですので、こういうテキスト化のpluginが必要です。
HTTrackをインストール。Cookieファイルが指定できるのでwgetでも大丈夫ですが、GUIでわかりやすいと思いますのでHTTrackで説明します。
手順
- FirefoxでGoogle Sitesにログイン
- Cookieファイルを取得
- Webサイトコピーソフトでバックアップ
- HTTrackを起動し、新規プロジェクトを作成します。
- それからこんな感じに、対象のGoogle SitesのURLを設定します。
- オプション設定の画面の「スキャンルール」では取得対象のサイト・ファイルを指定します。
- 次の画面で「設定のみで今はダウンロードを開始しない」を選んで、いったん完了させてください。
- Cookieファイルをコピーします。
- バックアップを開始する。
ちなみに、URLを入力する画面の「権限設定」でログイン・パスワードを入力する箇所がありますが、ここで設定できるのはBasic認証のものなので、GoogleSitesでは利用できません。
たとえばあらゆるサイトのpdfを取得する場合は”+*.pdf”を記述してください。”+*.*”もできそうですが、余計なファイルをたくさん取ってくるので、やめたほうがよさそうです。
また、Google Sitesは、sites.google.comにすべてのファイルがおいてあるように見せかけて、実は他のサイトにもあちこちファイルを置いているようなので、取得対象をsites.google.comに限定するとうまくいきません。ここではプロジェクトのディレクトリを作るだけにして、このあと、そこにCookieファイルをコピーします。
手順2で保存したファイルをExplorerなどでこのプロジェクトのディレクトリにコピーしてください。
画面の例では、”D:\My Web Sites”ディレクトリに”gsitebackup”というプロジェクトを作ったので、Cookieファイルのコピー先は、”D:\My Web Sites\gsitebackup”の下になります。
ここで注意。FirefoxのExport Cookiesで出力したCookieファイルにはドメイン名が.(ドット)で始まる情報が記述されているのですが、今回のHTTrackではそれがあるとうまくいかないので、手動でCookieファイルの先頭の.(ドット)を削除してあげる必要があります。
(Firefoxの3.0.11固有の現象かもしれません。3.0.10でやったときは何もせずにうまくいっていた気がするので。)
sakuraエディタの場合、次のような置換を実行すれば、先頭の.(ドット)が削除できます。
置換前:^.
置換後:(空欄)
先ほど作ったHTTrackのプロジェクトを開き、最後の画面まで進めて、「完了を押すとコピー(ミラー)が始まります」を選んで、[完了]を押します。対象となるサイトにもよりますが、多少時間がかかります。
ここで注意。もし、日本語ファイル名(ディレクトリ名)を使用しているサイトのバックアップを取る場合には、ファイルが文字化けしてうまくバックアップが取れない場合があります。
そういう場合は、HTTrackのランダムファイル名出力機能を使ってください。
HTTrackのプロジェクトのオプション設定の画面の「ビルド」タブを押して次のような感じにしてからバックアップを開始すると、生成されるファイル名がランダムな英数字になります。
説明の必要はないですね。普通にログインしてください。
Firefoxの[ツール] – [Export Cookies…]を選んで、Cookieファイルを保存してください。
ちなみにブラウザはバックアップ終了までそのままいじらないでください。
HTTrack使用上の注意
HTTrackの使い方の詳細についてはオフィシャルサイトとかを見てください。不用意に使用して、各地のWebサーバに余計な負荷をかけてしまうことのないようにご注意ください。
(私はこの記事を書くにあたって、かなりいろいろなところに負荷をかけてしまったと思います…)
ちなみに小規模なコンテンツなら、ブラウザのページ保存機能やWeBoXなどを使った方が手っ取り早いかもしれません。(本記事全否定ですね。。)
最後に
長々とお付き合いありがとうございました。
結構いろいろあって大変です。バージョンとか変わったらうまくいかないかもしれませんし、Google Sitesにバックアップ機能がつけばいらなくなるノウハウです。
まさにバッドノウハウってやつですね。
お久しぶりです~
wgetを使って、perlだけで同じようなことをしている人がいるようです。
http://blog.goo.ne.jp/ozoz-goo/e/df1a9584de24ffaf65e2c363c540652d
perlでできているから、シェルでもできそうな。
シェルだけで何でもやるのがすきなんです・・
コメントありがとうございます。
プログラムを書かずに簡単にできますよ~ってしたかったのですが、
結局プログラムを書いたほうが早いのでは?という内容になってしまいました。
次にバックアップを取る際には、いただいた情報を参考にさせていただきます!
#googleさんはトリッキーなので、問題があったときに解析するのが大変そうです。。
こんにちは。
googleが、いろんなサービスのインポート/エキスポートに努力しているようです。
http://www.itmedia.co.jp/enterprise/articles/0909/15/news024.html
これみると、向こう数ヶ月のうちにSitesもインポート/エキスポートが出来るようになりそうですよ。
その機能を、バッチで使えれば良いんだけど・・
情報ありがとうございます!
たしかに
http://www.dataliberation.org/google/apps-for-business
をみると、”Coming this fall”ってありますね。
どんな風に使えるようになるのか興味深いですね。
ちなみに、こういう機能って我々(おそらく一般的な)システム開発者からすれば真っ先につくりそうな機能ですけど、それをせずにここまでやってきたGoogleさんの優先順位の付け方というかフットワークの軽さは、現状のサービスの広がりを見ると、見習うべきものがあるかもしれませんね。
(請負で開発する人とWebサービスを作る人の、顧客に対する考え方の違い、ともいえるかもしれませんが。)
本文にも注記を書きましたが、kyoさんに教えていただいたGoogleのインポート/エキスポートツールが公開されましたので、使ってみた感じを記事にまとめました。
http://blog.bitmeister.jp/?p=1256
kyoさんありがとうございます。