httpでgitをpushできるサーバが欲しいの巻き

書きかけ。

  • 今はsvn使ってる
  • svnのbrancheの扱いが面倒な気がしてきた
  • git使いたい
  • 仕事先でsshが通らない
  • 仕事先と自宅でやりとりできる俺用github欲しい

やること

  • DAVの使えるapacheを用意する
    • すでにsvnが使えるようになってるのでこれはOK
    • DAVLockDB "/usr/local/var/httpd/DAV.lock"をhttpd.confに書き足した
    • DocumentRootにgitってディレクトリつくってbasic認証かけた

FreeBSDでddで吸い出したHDDイメージをマウントする

概要

FreeBSDでdd等で作ったイメージをマウントするにはmdconfig実行後にデバイス名がたぶんmd0とかで出てくるのでそのmd0を普通にマウントするとよい
以下例

# mdconfig -a -t vnode -f hdd.img
md0
# mount_ntfs -C CP932 /dev/md0 /mnt

HDDが死んだ\(^o^)/オワタ

自分のメインPCのHDDが突然壊れました。
ATOKが急に動かなくなったー!再起動しよう!と思って再起動したらOSすら起動しない。
HDDから異音がするのに気がついて翌日新HDDを買ってきてOS再セットアップしました

旧HDDへの未練

まぁ仕事データはサーバに置いてるし写真も2010年分までは外付けHDDにおいてるし4月からの写真はデジカメ内のSDカードにあるしgoogle chromeのデータはなんか同期したらほとんど戻ったし*1失ったデータは幼稚園の父母会の書類と、3月までの写真だけだから旧HDDの中身は別にいいやー
と思っていたのですが!今年の1月に幼稚園の誕生会イベントの写真を撮ったのにバックアップして無かったのを思い出したり、IS01用の諸々データや、お宝画像*2が失われたことに気がつき、何とか復旧できないだろうか!と思った次第

Windowsから認識しないパーティション

しょっちゅう重要なデータを消したりするのでファイナルデータとか買って持ってたりするので、旦那の予備PCがリムーバブルカートリッジとかついてて作業がしやすいので旧HDDをUSB変換ケーブルにつけて
WindowsからHDDが認識できれば何とかなるでしょーと思ったらWindowsからCドライブとsystem reservedになってたパーティションしか見えませんorz重要なのはDドライブにしてたパーティションなのに!
ファイナルデータにも探させたけどだめだった\(;o;)/

Linuxではどうだ

ubuntuのCDを焼いて起動すると目当てのパーティションが/dev/sddとして認識しました!認識したところでddでイメージを吸い出し。元々150GBのパーティションだったのにイメージが60GBしか無くて、これしか吸えなかったのかーと思ったらddのオプションがいろいろ不適切でした。

$ sudo dd if=/dev/sdd conv=sync,noerror of=/media/なんたら/hdd.img 

として吸い出しやりなおし。
全部で36時間くらいかかったけど、150GB位のイメージを吸い出せた。
bsが小さい方がエラーのあるHDDはよいらしいという情報を得てbs指定しなかったんだけど、obsは指定した方が早かったのかもしれない。

得たイメージをFreeBSD鯖にコピー

旦那が帰って来る前にPCを開けないといけなかったので、150GBのイメージをネットワーク経由で自分が自由に使えるFreeBSD鯖にコピー。
ssh鍵を生成して自分のホームページに一旦公開鍵おいて、それから鍵束の入ってる自分のPCでブラウザから鍵をコピペしてauthorized_keysに追加したー

Linuxext4においてあるイメージはバックアップのためにいじらないでおこうと思った。

で、FreeBSDNTFSのイメージがマウントできない

やっと概要の話題。
ddでとったHDDイメージをマウントしようとおもって

# mount -o ro,loop hdd.img /mnt

とかやったけど当然エラーな訳で…あーこれLinuxのmountだよなー、FreeBSDでループバックマウントってどうやるんだろう?と思ってman mountやらman mount_ntfsやらしてみたり、googlefreebsd ループバックマウントとかfreebsd imgとかしてみたけどいまいちよくわからず
もう遅いから旦那が明日会社に行ったらまたPC借りて作業しよう

と思ってつぶやいたら、助けの手が!
私、@koie氏には前にも何かFreeBSDで助言してもらってる様な気がします。ありがたい!

できたできた!

とりあえず当初の目的の幼稚園のお誕生日会の写真と動画を救えました!*3
が!幼稚園の父母会資料とポケモンいろいろの入ったUsers\nyomoフォルダが見当たらないorz
うーんこれはイメージを実HDDに書いてファイナルデータにかけて見るべきなんだろうかー

*1:細かい設定とかstylishcss無くなったけど

*2:エロじゃないよポケモンとかだよ

*3:フォルダ名が文字化けするけどまぁ問題ない

raidzをやめたい

後でちゃんと書く

メモ

  • 新しいプール作る(-m noneでよい)
  • 元のプールでスナップショットを作る(プールごとは無理そう。マウントポイント指定してpool/hoge@snap)
  • zfs send pool/hoge@snap | zfs recv newpool/hoge@snap
  • zfs unmount /hoge (pool/hogeがマウントされてた場所)
    • バイスがビジーとかならunmountの後に-f付けると強制的にアンマウント出来る
  • zfs set mountpoint=none pool/hoge
  • zfs set mountpoint=/hoge newpool/hoge
  • zfs mount

↑これで良いかは今試し中

MacBook Air 11インチ欲しい!
特にMacBookで無くても良い気がするんだけど、最近Windowsで無くても良い気がしてきて
それならばMacか!と思って見たり。
まぁはてなのキャンペーンなんですけどね

MySQLのrootパスワードを忘れた時の対処方法

自宅で使ってるMySQLサーバに新しいデータベースを作りたくなったんだけど、rootパスワードを忘れてしまったので、ググってみたけどバージョン5.1ではその方法は使えなかったので、英語マニュアルを見たけど、再度忘れた時にやり方をまた英語で読むのがめんどくさいのでメモ。

mysqlを動かすユーザでログインする作業があるから外のネットワークからログイン出来ない環境にしてから作業した方がいいかも
以下
http://dev.mysql.com/doc/refman/5.1/ja/resetting-permissions.html
からの抜粋メモ

  • MySQLを動かしてるユーザでログインする
  • MySQLを止める
  • 以下の内容のファイルを/tmp/mysql-initとかいう名前で作る
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('ここに新しいパスワード');
  • mysqld_safe --init-file=/tmp/mysql-init & を実行する

実行した後は/tmp/mysql-initを削除する
これで新しいパスワードが設定完了。MySQLを動かしていたユーザをログイン出来ないようにしていたなら戻して、念のためMySQLを再起動する

削除してしまったファイルを取り戻したい

概要

zfsのsnapshotをとった時のディレクトリの様子はファイルシステム直下の.zfsディレクトリに入ってる。間違えてファイルを削除してしまった時などはここからファイルをコピーして来ればよい

日記

ファイルサーバ上にあるファイルを間違えて消しちゃったよ( ・ω・)と旦那に言われて、この間zfsと格闘したときにsnapshotをとってあった事を思い出した。
zfsはsnapshotを簡単にとれるからバックアップが超簡単!という説明を読んでいたので、これから消してしまったデータを救い出してあげれば良いんじゃないかと思い調べてみた。
snapshotをとった時の状態にデータを戻す事をロールバックと言うらしい…が、ロールバックしてしまうと、snapshotをとった後に作ったファイルは消えてしまうらしい。
1つのファイルを取り戻すために他のファイルが失われてしまっては困る。
ファイルを削除した後に変更を加えたファイルを別のファイルシステムにコピーしてからロールバックをするという手も考えたけど、余りにスマートではない。
絶対にゴミ箱的なsnapshotからファイルを選んで復旧する手段があるはずだ!と調べたら

ls -al オプションでリストを表示しても、.zfs ディレクトリはデフォルトで 表示されませんが .zfs/snapshot ディレクトリを直接指定してリストを表示 してみます。

このスナップショットのデータは、読み込み専用で参照する事が可能なので、一部のファイル を戻したい時は、ここのディレクトリから直接コピーしてファイルを復旧する事ができます。

http://blogs.sun.com/yappri/entry/zfs_snapshot

とのこと。試しにzfsのプールをマウントしたディレクトリでcd .zfsってしたらsnapshotというディレクトリがあってそのしたにスナップショットの名前のディレクトリがあってさらにその中にファイルシステムディレクトリ構造がそのまま入ってました。
旦那に消したファイルの名前を聞いてコピーして復旧完了。おめでとう