lftp でサイトのデータを全部ダウンロードする

lftp -f website.lftp
とかする。

website.lftp:

# -o で debug で出力するファイルを指定
debug -o /home/www/site_backup/log/website.log 3

# リトライ回数の指定。 あんまり長々リトライされないように
set net:max-retries 5

# www.example.com を開く。ユーザ名とパスワードの指定
# このファイルの管理には気をつける。
open www.example.com
user example_username example_password

# ローカルのディレクトリを移動(無ければ作る)。
!mkdir -p /home/www/site_backup/website
lcd /home/www/site_backup/website

# リモートのディレクトリを移動
cd /var/www/public_html

# ミラーする
# とりあえず -v で色々出力
# --delete をつけると、リモートに無いファイルは削除する。(上手く動かせていければ有効にしようかと)
# 削除系は怖いので後で。
mirror -v

ユーザ名、パスワード直書きなので、 chmod 600 website.lftp。

script file にしているのは、 ps ax したときにパスワードが見えると嫌なので。

アップロードするときは mirror –reverse でいけるらしい。
(今のサイトの構造がアレなので、やると何かしら壊れて恐しいことがおこる)

ディレクトリのパスが書いてあるところは変数にしてまとめたいかも。
最初 ~/site_backup/website って書いてたら、cron で実行したときにパスが見つからなくて実行されてませんでした。

リトライ回数は、最初入れなかったら、エラー起きて再接続を何回もして、えっらい時間がかかったので制限をかけました。
# エラーを解消するのは、したいんだけど、今すぐは無理なので〜。

本当はこのファイルの自動生成と、オプションの一括更新ができるようになると嬉しいかな。
(今20くらいサイトあるし)

まずは、しっかりダウンロードできることを確認するのが目標。
# ftp なの? s つかないの? ・・・これも調べないと。

参考にしたサイト

lftp でサイトをバックアップして pdumpfs でスナップショットをとる

お仕事で使うのでちょっと実験。

事の発端は・・・
現在、複数人でサイトの更新をしているが、個々にやってるからデグレードが起きたりする。
このへんはコミュニケーションをちゃんととったとしても、人間なのでミスるんだから、
そうならないような更新の仕組みを考えているところ。

で、今、最も恐しいことは、最新のデータがサーバー上にあがっているものだけしかないということ。
つまりは、ミスってファイル消したら、誰も持っていない!? ということが起こりうる。
ひっじょーにおっかない。RAID にしてたって、自分で消したら無くなるし。

作業をする前に全部のデータをダウンロードするのは、時間かかりすぎるのでむずかしい。
なぜかというと、サーバーの時間が大幅に狂っているので どれが新しいのかわからないんだ。
直してほしいのだが、こっちで管理してないのと、大人の事情で一筋縄ではいかなそうでねorz。

当然社内に git や svn リポジトリを作って〜という事も考えているけど、すぐには無理。
サーバー側で生成しているものもある。
あと、誰もやってくれなそうだからうちがやることになるだろうってのと、
社内サーバーたてるとっから始まるし、どのツールをどうやって組みあわせていくかをまだ考え中。
あと、手順も考えたりと、先は長い。

ん〜・・・正攻法でいくには時間がかかる。
が、サイト群の構成がぐっちゃんぐっちゃんな為、
今すぐ保険をかけとかないと恐すぎる!

というわけで、まず1日1回 全サイトのデータをバックアップをとろう!と。
で、ミスがすぐに発見されるとは限らないので、ちゃんとその日その日でとっておかないとマズイ。あと、当然自動で。
しばらくは、何かあったら redmine につけてる作業ログから判断し、修正することで逃げる。

そしたら、どうやるか。
まず ftp でサイトのデータをダウンロードしなくちゃ。
rsync や git は使えないから lftp で。
lftp の mirror コマンドで一発ダウンロードできて便利。
あと、lftp -f をつかうと、lftp のコマンドをスクリプトファイルに出せるので、
ps ax したときに ID PASS 丸見え! という恐ろしい事態は避けられそう。
ま、そのスクリプトファイルは、自分しか見えないようにしておかないとマズいんだけど。

で、落としたデータをまたスナップショットをとりながらバックアップは、pdumpfs。
ハードリンクなので、途中をゴソっト抜いても大丈夫

そして、こいつらを毎日 cron で回すと、一応目標達成。

あと、このサイト群には個人情報は無いハズなので、
暗号化についてはとりあえずしなくて平気かな。

そろそろ寝ないと明日死にそうなので、また明日。