閉鎖サービスを丸ごとアーカイブする（ジオシティーズ編）

#はじめに
infoseek isweb とか @homepage とか、ホスティングサービスが終了するたびアーカイブを作っているので、メモ
特にsすごいことは書いてないです。
**※殴り書きです**

#目次
 - 対象をリスト化
 - 収集方法
 - 保存先

# 対象をリスト化
まずはアーカイブ対象のURLリストを作成します。
`Index of /`が使えれば良いのですが、無効化されてますのでヘルプから規則性を探し、その後外部サービスを活用します。

## ヘルプから規則性を探す
大きく分けて2つあります。

 - サブドメイン方式
 - サブディレクトリ方式

URLから調べることもできますが、両方アクセス可能だったり、片方の使用率が高く、もう片方の存在に気が付かないこともあるので、公式を確認するのが一番です。

### ジオシティーズの場合
> http://[サブドメイン].geocities.jp/Yahoo! JAPAN ID/
> http://[サブドメイン].geocities.jp/ニックネーム/

[Yahoo!ジオシティーズヘルプ - ジオシティーズで利用できるホームページアドレス（URL）](https://www.yahoo-help.jp/app/answers/detail/p/549/a_id/42230/)

サブドメイン一覧がヘルプにみつからないので、そのような場合は捨て垢を使いホームページ開設ページから探します。
Yahoo! JAPAN ID・ニックネームをリスト化するのは無理でした。（桁数が少なければ総当たり）

通常はこれで終わりですが、今回は旧ジオシティーズというものがあるようです。

> http://www.geocities.co.jp/[コミュニティ名]/[番地]

[Yahoo!ジオシティーズヘルプ - 旧ジオシティーズのホームページ（URL）を削除したい](https://www.yahoo-help.jp/app/answers/detail/a_id/42105/)
コミュニティ名と番地の規則性があれば良いですが、旧ジオシティーズに関するヘルプするほとんどありません。

Google大先生にお伺いしたところ、なんとかリスト化できました。
コミュニティ名は26個、番地は1000~9999の範囲でした。
[geocities/street.txt at master · CloudRemix/geocities · GitHub](https://github.com/CloudRemix/geocities/blob/master/street.txt)
※折角なのでおいておきます。プルリク歓迎

[Re:OoCitiesみたいなアーカイブのプロジェクトを誰かやらないのかな (#3491246) | Yahoo!ジオシティーズ、2019年3月にサービス終了 | スラド](https://it.srad.jp/comments.pl?sid=746087&cid=3491246)
[ページタイトルなし:](http://www.geocities.jp/clone_01/eGB/emu/field.html)※一次ソース
[11. 収集ロボット Heritrix | ウェブアーカイブのしくみ｜国立国会図書館インターネット資料収集保存事業](http://warp.da.ndl.go.jp/contents/reccommend/mechanism/mechanism_heritrix.html)

## 外部サービスを活用
検索エンジンの検索結果やリンク集からリスト化する方法です。
Google検索であれば検索ワード`site:qiita.com`でURLリストが作れます。ただ最近はスパム対策で300件ほどしか取得できません。
検索結果方式が役立たずになったので、[はてなブックマーク](http://b.hatena.ne.jp/)とか[にほんブログ村](https://www.blogmura.com/)とかのリンクを使います。
網羅的にはどうなの？って感じですがないよりマシです。

リスト化する方法はスクリプトを作るなりして頑張ってください。

参考程度に私が見つけたジオシティーズのURLリストをおいておきます。
[CloudRemix/geocities: Geocities URL List](https://github.com/CloudRemix/geocities)
※プルリク歓迎

# 収集方法
[Internet Archive](https://archive.org/web/)でも使われている[Heritrix](https://webarchive.jira.com/wiki/spaces/Heritrix/overview)が便利です。
Java実行環境が必要のためちょっと手間ですが、実績もあり一度設定すれば半永久的に使えます。
~~時間があればセットアップ記事を書きたい~~
→書いた。[CloudGarageで「Heritrix」を動かす](https://qiita.com/CloudRemix/items/f10ee1e393b191fcb481)

ただ私は、格安のVPS or クラウドで`wget`を走らせることが多いです。
Heritrixは便利なのですが、WARCという専用フォーマットで保存するため閲覧ソフトが必要になります。
手軽に見たいならWgetで十分です。
[13.保存用ファイルフォーマット WARC | ウェブアーカイブのしくみ｜国立国会図書館インターネット資料収集保存事業](http://warp.da.ndl.go.jp/contents/reccommend/mechanism/mechanism_warc.html)

`wget`を使う場合は`--mirror`と`--wait=5 --random-wait`を設定すればOKです。
**Wait警察が来てしまうので、必ずwaitを入れましょう**

## サーバーの選び方
小規模サービスであればどこでも良いですが、大規模サービスであればネットワーク転送量が必要になります。
ポイントは**転送量の目安**を公開しているところです。

具体的には~~[IDCFクラウド](https://www.idcf.jp/cloud/)(3TB/mon)~~や[WebARENA](https://faq.nttpc.co.jp/faq/show/11965?site_domain=vps-cloud)(0.3TB/mon~)がオススメです。
間違っても転送量無制限は選んではいけません（無制限を謳って本当に何も言ってこない[Cloudnは除く](https://www.ntt.com/business/services/cloud/iaas/cloudn.html)）
[VPS・クラウドのネットワーク帯域・転送量制限・仕様一覧 - Qiita](https://qiita.com/CloudRemix/items/20caea11fae08d3c0c81)


**IDCFクラウドは法人限定となりました**
~~私はよく[IDCFクラウド](https://www.idcf.jp/cloud/)を使ってます。
1コア/1GBの仮想マシンが月500円で使えて、50GB未満であればオブジェクトストレージも無料で使えます。
時間課金で初期費用も必要ないので、アーカイブが終わったら仮想マシンを消し、ストレージ代だけで保存できます。~~

[WebARENA](https://web.arena.ne.jp/vps-cloud/)はメモリが0.5GBで微妙でしたが最近メモリが倍増になったので使い勝手は良さそうです。
ただ時間課金がないので終わってすぐ消しても課金が発生します。
安い(360円/月)ので別の用途で使い続けると良いです。

# 保存先
オブジェクトストレージ一択です。
一時は外付けHDDに保存していましたが、保管が面倒＆ディスク障害に遭ったため、おまかせできるオブジェクトストレージが一番です。

Amazon S3が有名ですが、個人で使うには少しお高いので、[B2 Cloud Storage](https://www.backblaze.com/b2/cloud-storage-pricing.html)~~か、50GB未満で収まるのであれば[IDCFクラウド](https://www.idcf.jp/cloud/storage/spec.html)~~を使います。
B2は定期的にHDDに故障率を公開しているので知っている人は知っているかもしれません。
1TBが月5ドルぐらいでネットワークも早いので使い勝手は良いです。

公開するのであれば容量にもよりますが、最近登場した[ConoHa WING](https://www.conoha.jp/wing/)とか定番の[エックスサーバー](https://www.xserver.ne.jp/)でしょうか。
経験から無制限を謳っているところは避けたほうが良いです。どことは言いませんが追い出されますし、事前に目安を聞いても教えてくれません。

また、経験からジオシティーズ級をwindowsに保存することはオススメしません。
仕様的には問題ないですが、1億ファイルを平気で超えるので、エクスプローラで開く→フリーズ→メモリを食い尽くしてダウン→ディスク破損という謎コンボを決めてきます。最初にも書いたようにオブジェクトストレージがオススメです。
ただ、オブジェクトストレージでも億超えはキツイことがあるので、最低限サブドメインでバケットを分けたほうが良いです。
[１フォルダに大量の画像ファイル読み書きで破損 - マイクロソフト コミュニティ](https://answers.microsoft.com/ja-jp/windows/forum/windows_7-files/%EF%BC%91%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80/0a64fe93-d9b9-4e5b-9fa9-95ced1531769)

#まとめ

 - ヘルプから規則性を探せ
 - 外部サービスも使え
 - wgetはwaitがいれろ
 - サーバーはネットワーク帯域で選べ
 - 保存先はオブジェクトストレージ一択