web-dev-qa-db-ja.com

(アクティブな)phpbbフォーラム全体をダウンロードするにはどうすればよいですか?

私が頻繁に使用する(そして多くの高品質のコンテンツも追加した)フォーラムの1つは、サーバーに問題があるようです。私は彼らが抱えている問題を整理する彼らの能力に自信がなく、彼がデータをバックアップしていないと彼が言った管理者の一人と話をしました。

何かがひどくうまくいかない場合の完全なフォールバックとして、私はフォーラム全体をダウンロードしたいと思います。 DBやPHPファイルなど)をダウンロードできないことを認識しています。フォーラム全体のローカルで閲覧可能なコピーを作成したいだけです。

つまり、(時間があるときに)投稿が新しく開始された場合(意図的かどうかに関係なく)、新しいサイトに投稿を転送できます。

これを可能にするツールはありますか?

補足:明らかに、ローカルで閲覧できることは非常に重要です...各リンクがまだ ' http://www.thesite.com/forum/specific_page.php を指している場合は非常に困難です。 = '/ forum/specific_page.php'ではなく '。

7
user28163

私は今これをやっています。これが私が使用しているコマンドです:

wget -k -m -E -p -np -R memberlist.php*,faq.php*,viewtopic.php*p=*,posting.php*,search.php*,ucp.php*,viewonline.php*,*sid*,*view=print*,*start=0* -o log.txt http://www.example.com/forum/

私はそれらの厄介なセッションIDのもの(sid = blahblahblah)を取り除きたかった。それらはインデックスページによって自動的に追加され、ウイルスのようにすべてのリンクに接続されるようです。どこかでリスされたものを除いて-プレーンなindex.phpにリンクし、sid =パラメーターなしで続行します。 (おそらく、再帰的なwgetをindex.phpから開始するように強制する方法があります-私にはわかりません)。

また、多くのがらくたが保存されることにつながる他のいくつかのページも除外しました。特に、p =が指定されているmemberlist.phpとviewtopic.phpは、何千ものファイルを作成する可能性があります。

Wgetのこのバグのために http://savannah.gnu.org/bugs/?20808 それでも驚くほどの数のそれらの役に立たないファイルをダウンロードします-特にviewtopic.php?p =ファイル-単に前にそれらを削除します。したがって、これは多くの時間と帯域幅を消費します。

8
Andrew Russell

私は最近、差し迫った絶滅に直面することが多いphpBBサイトで同様の問題に直面しました(悲しいことに、管理者が亡くなったため)。フォーラムに7年以上投稿されていたので、それが消えるのを見たくなかったので、すべてのトピックを調べてフラットHTMLファイルとしてディスクに保存するPerlスクリプトを作成しました。他の誰かが同様の問題に直面している場合、スクリプトはここから入手できます。

https://Gist.github.com/2030469

トピック内の投稿の数を抽出するために正規表現に依存しています(ページ付けする必要があります)が、それ以外は一般的に機能するはずです。一部の正規表現は、phpBBテーマによっては微調整が必​​要な場合があります。

3
Evan

次のようなwgetフラグの組み合わせを試してください。

wget -m -k www.example.org/phpbb

ここで、-mはミラー、-kは「リンクの変換」です。 -mがこれを行うかどうか思い出せないので、画像をダウンロードするために-pを追加することもできます。

1
Phoshi

ここにいくつかの追加情報が@ andrew-russellにあります

まだたくさんのノイズがありますが、ログインする必要がある場合は開始します。

このプロジェクトは有望に見えますが、私にはうまくいきませんでした: https://github.com/lairdshaw/fups

ログインの例:

PHPBB_URL=http://www.someserver.com/phpbb
USER=MyUser
PASS=MyPass

wget --save-cookies=./session-cookies-$USER $PHPBB_URL/ucp.php?mode=login -O - 1> /dev/null 2> /dev/null

SID=`cat ./session-cookies-$USER | grep _sid | cut -d$'\011' -f7`

echo "Login $USER --> $PHPBB_URL SID=$SID"

wget --save-cookies=./session-cookies-$USER \
 --post-data="username=$USER&password=$PASS&redirect=index.php&sid=$SID&login=Login" \
 $PHPBB_URL/ucp.php?mode=login --referer="$PHPBB_URL/ucp.php?mode=login" \
 -O - 1> /dev/null 2> /dev/null

wget --load-cookies ./session-cookies-$USER -k -m -E -p -np -R memberlist.php*,faq.php*,viewtopic.php*p=*,posting.php*,search.php*,ucp.php*,viewonline.php*,*sid*,*view=print*,*start=0* $PHPBB_URL/viewtopic.php?t=27704

######## loop thru topics see below(but above should get most with the options. 
#wget --load-cookies ./session-cookies-$USER -k -m -E -p -np -R $PHPBB_URL/viewtopic.php?t={1..29700}
0
Tilo