Oct 30, 2005
nucleusのデータ復元で
下のcron登録で、3.の復元の前にクライアント側のnucleusにアクセスしてしまうと、復元できない。
どうしてもちゃんとバックアップされているか確かめたくなるのだが、もしアクセスした場合は、復元する前にnucleusのデータベースの中身を削除しないとエラーが出る。
クライアントにインストールされたphpmyadminを使って、クライアント側のnucluesのデータを削除してから、コマンドラインを実行すればいい。
クライアント側にデータはバックアップされているのだが、一度手動の手続きが必要なのは改善できたらな、と思う。nucleusにはバックアップ・リストアという独自の機能がある(backup.phpというスクリプトをnucleusから呼び出す)。これをなんとかコマンドラインにして、バックアップ、リストアが自動的にできるようにすることができないのかな。
とりあえずは下のcron登録で、「サーバ側のnucleusのデータをバックアップして、それをクライアント側が毎日定時に保存する」というところまではできる。
Oct 29, 2005
データベースのバックアップ・リストアの覚書
nucleusやMT、xoopsなどのデータベースを使うCMSのデータのバックアップのまとめを書いておきたい。
自分のための覚書でもある。
1.
たとえば、サーバ側のcronに次のようなコマンドライン入れたシェルスクリプトを登録する。個別のデータベースをバックアップする方式(全部のデータベースではなく。いっぱいバックアップすべきデータベースがあるのなら、いっぺんに全部をバックアップするコマンドラインのほうがいいかもしれない)。
mysqldump -uroot -p(mysqlのrootのパスワード、pにくっつけて) poem(これはデータベースの名前) >/home/shimirin/backup/poembk(バックアップするファイルの名前。フルパスで書かないと、cronが理解しない)
2.
rsyncでクライアント側からデータを取得するシェルスクリプトに次のような1行を含める(クライアント側のcronにそのシェルスクリプトは登録されている)。
rsync -avz -e ssh 192.168.0.8:/home/shimirin/backup/poembk /home/shimirin/backup/
(最後のスラッシュがないと、shimirinディレクトリにbackupというファイルがpoembookの内容でできてしまうので注意)
3.
クライアント側にリストアのスクリプトを作ってcronに登録する。
mysql -uroot -p(mysqlのrootのパスワード、pにくっつけて) poem < /home/shimirin/backup/poembk(リストアするファイルの名前。フルパスで書かないと、cronが理解しない)
時刻は1.--2.--3.の順にする。
rsyncの情報源
Rsyncによるデータバックアップ
rsync + cron + ssh (rsyncd を立てない編)
linuxwiki@ぱ研 - rsyncでお手軽バックアップ
rsync
これらのサイトの要点を読んでいけば、設定が試行錯誤のうえ、できると思う。
しかし、バックアップというのは地味な仕事だなあ。重要だけど。
自宅サーバというのは、アタフタするところから脱出する喜びを味わうというマゾなところがあるが、アタフタしないようにする志向。
しかし、やっぱりそれでもアタフタすることはあるんですよね。
Oct 27, 2005
HostbasedAuthenticationsの設定で、もうひとつ
rsyncをパスワードなしで行うHostbasedAuthenticationsの設定でもうひとつハマったのを忘れていた。rootから、
/etc/ssh/shosts.equiv
を作って、
192.168.0.8 shimirin
などと書いてもいいが、それをするまでもなくホームディレクトリに「.shosts」というファイルを作り、上の一行を書き込めばいい。
「/etc/ssh/shosts.equiv」
をまず見にいって、次に「.shosts」を見にいく。
どちらもないとパスワードを要求される。
バックアップの自動化スクリプトをつくる
とりあえず、バックアップの自動化はめんどうなところから始めて成功した(と思う^^)。
rsyncではもちろん、root権限ではアクセスできないようにする。
とすると、www-dataがオーナーでありグループのファイルは、バックアップする前にshimirinのオーナー、グループにしてコピーし、バックアップが終わったら、また元のwww-dataに戻す必要がある。
このオーナー、グループの変更はrootの仕事だ。
つまり、この部分は、一日の一定時刻に実行するようにcronに登録するときに、rootで登録しなければならない。考えてみると、ディトリビューションが同じでも、別のユーザが他のユーザのファイル属性を変えられないので、この作業は必須のようだ。
というわけで、この2つの作業をサンドイッチのパンのようにして、バックアップをrsyncで行うことにした。
またデータベースにつながったページもある。これは、mysqlだのpostgresqlだのがオーナー、グループなので逆にその点は心配りすることはない。
しかし、
$mysqldump -A -uroot -p(パスワード。pにくっつけて)--opt -r(適当なファイル名。rにくっつけて)
をサーバ側で行い、これをrsyncでクライアント側が取得して、リストアしなければならない。
$mysql -uroot -p(パスワード。pにくっつけて)<(上の適当なファイル名)
このファイルの取得は、上のバックアップをするときのシェルスクリプトにいれればいいので、cronの作業としてはユーザとしてサンドイッチの上のパンをサーバ側で作り、下のパンをクライアント側で作る。
動的なファイルを作らないユーザのweb公開ディレクトリはしごく簡単だ。ただ、一定時刻にrsyncを使い、更新されたり、新たにアップロードされたファイルを取得するだけでいい。
rsyncのいいところは、もうあとは気にしないでいい(^^)ということだ。
みんなやってくれる!
Oct 25, 2005
やっとできた!
rsyncでパスワード入力なし(HostbasedAuthentications)で、cronで自動的にバックアップする方法で、ハマっていたが、やっとできた。
たぶん、ぼくぐらいのスキルの方はハマることがあるだろうが、ぼくの場合のpointは次の2つだった。
名前解決は/etc/hostsの次にDNS。
hostsには双方に正確に名前を書かなければいけない。
192.168.0.8 you.love.belle.cxm
192.168.0.5 i.love.chaos.cxm
とか。
サーバ側の「~/.ssh/known_hosts」には、
you.love.belle.cxm,192.168.0.8 ssh-rsa 以下暗号化鍵
というようにIPアドレスだけでなく、hostsに登録してある名前が必要。
Oct 23, 2005
Oct 22, 2005
rsyncによるバックアップ
ぼくのhomeディレクトリの、web公開ディレクトリはけっこう複雑ではある。
webサーバとしてのルートディレクトリは、/var/www/(これはDebian GNU/Linuxの場合)。
homeディレクトリのweb公開ディレクトリはpublic_html。
サーバとクライアントが同じLAN上にあり、両方Linuxならば同期するのはそれほど難しくはない。ただ、別のディストリビューションだと、web公開ディレクトリ上で動的に生成されるファイルのオーナー、グループの名前が違う。もし、同じディストリビューションで、同じApacheのバージョンならば、
$rsync -avz -e ssh shimirin@example.com:/home/shimirin/public_html/ /home/shimirin/public_html
とやって、バックアップしたくなったら、このコマンドを打てば全部のファイルの同期がとれる。
-a
は、アーカイブモードでの転送。ファイルのオーナー、グループ、パーミッション、時間(、デバイス、シンボリックリンク)を保存する。
動的ファイルが生成されていないならば、これですべてOKの感じ。
この場合、rsyncが両方のマシンにインストールされている必要がある。
rsyncは2つの同名の内容が異なるファイルのとき、「異なる部分」だけを抽出して転送するらしい。効率的。
ぼくもこのrsyncをだんだん利用しはじめた。
自宅サーバをやっている人がいつも感じると思われる「喉の小骨」が、バックアップだ。
一歩進めば、暗号化技術のrsaの公開鍵を生成して、cronで30分おきなどに自動でやれば、「喉の小骨」はもうないような(^^)。
Oct 20, 2005
kakasiとchasen
全文検索システム「namazu」に使われる、kakasiのコマンドラインの例が『Debian辞典』に載っていて面白そうなのでやってみた。
検索するときのindex形式には、品詞分解や、ひらがら化が必須だと思う。
-JHは漢字をひらがなに、-fはルビをブラケットに入れて表示する。ルビは固有名詞などはうまくいかない場合もあるが、いろいろ利用できそうである。
shimirin@debian:~$ echo "日本語環境の設定" | kakasi -JH -w -f
日本語環境[にほんごかんきょう] の 設定[せってい]
chasenは品詞分解をする。
shimirin@debian:~$ echo "立体などがきれいに映る。" | chasen
立体 リッタイ 立体 名詞-一般
など ナド など 助詞-副助詞
が ガ が 助詞-格助詞-一般
きれい キレイ きれい 名詞-形容動詞語幹
に ニ に 助詞-副詞化
映る ウツル 映る 動詞-自立 五段・ラ行 基本形
。 。 。 記号-句点
Oct 19, 2005
i915GMm-HFSとDebian GNU/Linux Debian kernel
i915GMm-HFSとDebian GNU/Linux sargeを組み合わせて使うときに、わかったことは以下のようなことだった。
(ただし、ぼくの力量によるので、スキルによっては解決できることもあると思われる)
kernel2.4.7だと、alsaモジュールはインストールしなければならないが、HD Audioコーデック「ALC880」は認識してオンボードのサウンド機能がすぐに使える。
kernel2.6.8-2だと、alsaモジュールはkernelに組み込まれているが、2.4のalsaに入っているHDAコーデックは認識されるものの、なんか変。
したがって、音が鳴らない。
普通の外部モジュールにして、ossとalsaを無効にして、サウンド機能だけ有効にしてkernelを再構築してみたが、それでもだめだった。
それで、ぼくの場合、kernel2.6に外部モジュールとして入れたalsaモジュールで認識されることがわかっている、次のボードを買った。
Sound Card Creative Labs CT4750
Sound Blaster 128 PCI Bulk PCI/ドライバ無 1 400円(中古品・税込み)
400円とはいうものの、代金引換えで、1555円。
これで音楽CDを聴ける。
たぶん、kernel2.6系がupgradeしていき、HDAは認識されるようになるのではないかと思う。
MarvelのギガビットLANコントローラ「88E8053」は、ソースを入手してkernelを再構築すればたぶん認識しそう。ぼくはやっていない。
このLANボードのほうが、Debian GNU/Linuxのプロジェクトはサウンドチップより対応が早そうな気がする。つまり、何回かkernel2.6系をupgradeするうちに、突然、2つのLAN差し込み口が使えるようになると思う。
不思議な感じもするが、SATAのHDDを使う場合、kernel2.4.7ならスムーズにいく。ただし、kernel2.6系がSATAを「sda」と認識するはずだが、「hda」と2.4系は認識する。普通に2.4から2.6にupgradeするときにも、なんか今忘れてしまったが、ユーティリティを一つインストールする必要があったと思うが、SATAの場合は、2.4系をインストールしたら、しばらくそのバージョンで使うのが正解だと思う。
ぼくの場合は、なんとか2.6系を使いたいと思ったので、2.6系にパラレルHDDを使い、サウンドボードを400円で買ったわけだ。
しかし、速い! と思う。それに静かだ。
Oct 17, 2005
ImageMagickのマジック
Linuxで画像を処理するなら、いろいろソフトがある。
The Gimpと、KDEの画面キャプチャなどよく使っていたが、ImageMagickというコマンドラインの画像処理ソフトでは意外に使いやすいものがあることがわかった。
もともとImageMagickはPerlのCGIなどの解説で見かけていたものだ。
きっかけはnucleus blogのほうで書いた、画像一括web用アルバム変換ソフトの「igal」を使うときに、画像のサイズを一気に変換できるものはないだろうか、というので調べてみたときだった。
たとえば、ImageMagickに含まれる、「mogrify」というコマンドを使うと、同じディレクトリにある多数の画像ファイルのサイズを全部一度に変換することができる。
ただし、普通デジカメなどではセブン-イレブンなどのデジカメプリント(今1枚30円)などを使うときには、解像度が高いほどいい。
しかし、いろいろな方にweb上で見せるときには、640x480ピクセルぐらいが適当だ。
たとえば、1600x1200のサイズで撮った写真のフォルダの中身を全部、igalコマンドでアルバムを作成するディレクトリにコピーして、
$mogrify -resize 640x480! *.jpg
を実行すればいい。縦横の比は同じ数字でないとまずいかもしれないが、ほかに柔軟なオプションがあるかもしれない。
また、昨日はwebcamの多数の静止画像から、アニメgifを簡単に作れないかと思って調べたところ、
$convert -delay 10 *.jpg anime.gif
と実行すれば、「anime.gif」というファイルができることがわかった。
ちなみに、昨日作ったのは、05年10月13日というファイルである。
Oct 16, 2005
LinuxでMOを認識する
まず、dmesgコマンドでつながれたmoを確認する。
debian2:/home/shimirin$ dmesg
……
usb 5-8: new high speed USB device using address 3
Initializing USB Mass Storage driver...
scsi0 : SCSI emulation for USB Mass Storage devices
Vendor: FUJITSU Model: MCN3064UB Rev: 0020
Type: Direct-Access ANSI SCSI revision: 02
USB Mass Storage device found at 3
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0
……
次にrootになって、fdiskを実行する。
1 既存のパーティションを削除する。
(pで実行する)
2 新しいパーティションを作成する。
(nで実行する。)
3 新しいパーティションをディスクに書き込む。
(wで実行する。)
下の引用は1を実行して一度抜けたので、2から。
shimirin@debian2:~$ su
Password:
debian2:/home/shimirin# fdisk /dev/sda
Note: sector size is 2048 (not 512)
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-254, default 1):
Last cylinder or +size or +sizeM or +sizeK (1-254, default 254):
Using default value 254
Command (m for help): p
Disk /dev/sda: 635 MB, 635600896 bytes
20 heads, 61 sectors/track, 254 cylinders
Units = cylinders of 1220 * 2048 = 2498560 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 254 619638 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
次にmoをフォーマットする。
debian2:/home/shimirin# mkfs -t ext2 -b 2048 /dev/sda1
mke2fs 1.37 (21-Mar-2005)
Filesystem label=
OS type: Linux
Block size=2048 (log=1)
Fragment size=2048 (log=1)
77520 inodes, 309818 blocks
15490 blocks (5.00%) reserved for the super user
First data block=0
19 block groups
16384 blocks per group, 16384 fragments per group
4080 inodes per group
Superblock backups stored on blocks:
16384, 49152, 81920, 114688, 147456
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
moをマウントするにはマウントポイントのディレクトリを作る。
debian2:/home/shimirin# mkdir /mnt/mo
debian2:/home/shimirin# mount /dev/sda1 /mnt/mo
moをアンマウントすれば、usbの差し込み口から、moをはずしても大丈夫。
debian2:/home/shimirin# unmount /mnt/mo
mountしたmoの中にいるときには、当然unmountできないので、外に出てから。
Oct 15, 2005
i915GMm-HFSマシンのHDDを付け替える
やはり、kernel2.6で使いたいのでシリアルATAのHDDをパラレルATAのHDDに付け替えた。
どうもSATAの認識の問題があって、kernel2.6.13あたりから大丈夫になりそうだが、もうひとつのマシンのDebianが正式Packageのkernel2.6.8-2なので、これと同じにしたいと思ったからだ。
ただ音源チップの認識は、2.6系列からalsaがkernelに組み込まれ、このマザーボードのチップは、逆に2.4のalsaconfのようにうまく稼働しなかった。
2.4系列のmodulesは、kernelと分離して扱われるから稼働するのかなあ。まだ原因追求中。
音はそれほど聞くわけでもないし、サーバは逆に音を出なくするのが普通だが、やはりゲームなどのときに欲しい。
Oct 12, 2005
i915GMm-HFSマシンを組み立てる
冷や汗をかいたというのも、マザーボードの説明書に、
「電源をオンにし、電源装置、ケースファン、およびCPUファンが正しく動作しているか確認します」
という項目で「No」の場合、「メモリがシステムと互換性を持たないか、VGAカードまたはモニタが故障している可能性があります」とあったからだ。
ぼくが適当に買ってきたものは24ピンではあるが、4ピンを折り曲げられるタイプ。
電源の会社に聞くと、切り離してもいい、という。でも電源ファンも回らないので、メモリの相性問題発生かと思ったのだった。
メモリは、FSB533の速度を出すために、
DDR2 4200 512M CL4 SAMSUNG
を2枚。PC-SUCCESSという店で、1枚5880円だった。
相性保証を付けて(1枚315円)、2枚で税込み12390円。
これを相性がだめということで買い直すという恐れが浮かんだ。
しかし、ほかのパソコンの普通のATX電源を装着したら、問題なく動くのでひと安心。
たぶん、メモリはバルク品でも大丈夫だと思う。バルク品だとSAMSUNGより2枚で5000円ぐらい安いので、念のため相性保証を付けて、これで試してもいいかもしれない。
パソコンを組み立てるのは、基本的なパーツを適切に選んでおけば、プラモデルより簡単だ。プラスドライバ1本で作れる。
強いていえば、1カ所だけ細かい部分がある。いわゆる針山だ。ケースのスピーカー、リセットスイッチ、電源スイッチ、ハードディスクアクセス時のLEDの線をつなげるところはピンセットが要るかもしれない。ぼくは手でやってしまう。
今度のパソコンの場合、i915GMm-HFSなので、
CPUは、ぼくの場合、Pentium M 750 1.86GHz PGA(PC-SUCCESSの店頭売りで30429円=税込み)
メモリは、DDR2 4200 512M CL4 ×2枚で1G
で、グラフィックボードはせっかくのマザーボードなので、PCI Express規格のGeFORCE 6600GT(nVIDIA)128Mぐらいのもの。これはWindowsでゲームをやることも考えていいものにする。
というぐらいで、DVDドライブなど適当に選べばあとは組み立てるのみ。
Debian GNU/Linuxをインストールすることがあらかじめ決まっているのならば、1枚確実に動くLANカードを用意すべきである。ぼくの場合、Intel Pro/100 S Server Adapterを用意したが、Coregaなどの1500円ぐらいのLANカードでもいいと思う。
このマザーボードにはDual Marvell Gigabit PCI Express LANチップというのが載っている。こんなにカッコいい名前でしかもデュアルギガビットLANチップは聞いたことがないので、たぶん、Linuxで動かないことが想像できる。もし、動かないとインストール時にすぐインターネットを使う必要があるので面倒なのだ。
しばらく経つと、このデュアルギガビットLANチップも使えるようになるのは確実なので、用意したLANカードを使って、しばらくの辛抱。
ぼくはオンボードの音源チップ、Azalia Codecというのも使えないかもしれないと思っていたが、alsaですぐに認識した。音源コネクタが6つもある! まだよくわからない。
i915GMm-HFS(AOpen)の電源
PentiumMは発熱の面でもスピードの面でもいいCPUだというので、今年はこれで作ることにした。自宅サーバの資源としては、今年からは「遊び」のほうにはみだしていく。
i915GMm-HFS(AOpen)のマシンを作る過程で電源でちょっと冷や汗をかいた。
詳しいスペックは次の2つのページに書いてある。
i915GMm-HFS(AOpenのページ)
i915GMm-HFS(月刊アスキーのReview)
下のReviewの記事に、
(5) 20ピン電源コネクタ
ATX12V以降の電源規格に準拠したメインの20ピン電源コネクタ。ATX12V V2.0など新しい規格に準拠した電源ユニットを使うときは24ピン→20ピン変換コネクタを利用する。
と書いてあるが、要は「普通のATX電源を買う」ということである。
ぼくは適当に選んでV2.01対応の24ピンのものを買ってしまって、これは変換コネクタ(600円ぐらい)を使わないといけないようだ。
下は24ピン→20ピン変換コネクタ。逆の20ピン→24ピンも売られているので注意。
Oct 06, 2005
劇団ひとりと琴欧州
このふたりは秋葉原によく行くらしいので、親しみのある芸能人である。
劇団ひとりは、パソコン自作をやるらしい。
昨日『愛エプ』で、細木数子の作った料理をやたらにみんな褒めて、劇団ひとりは「いま世界中で、これはいちばんおいしい液体かもしれませんね」と言ったのがおもしろかった。
話は逸れるが、あの料理評論家の服部幸應?が出てくると、妻とかならずする会話がある。
ぼく「なんであの人はあんなに色が黒いのだろう」
妻「ゴルフ焼けじゃないの?」
この会話はたぶん10回以上している。
琴欧州は、ぼくの推測だと、ブルガリアのご両親やきょうだいとビデオ電話している。べつにブルガリア語のWindowsをインストールしなくても、音声と映像なら、日本語のでもかまわないはずだ。
もしかしたら、もっと進んでいて、ブルガリアのWindowsをインストールあるいは故郷で買ってもってきたものをインストールしているかもしれない。
今日、MicroATXのケースを秋葉原で買ってきてしまった。これくらいで多幸感が湧くので経済的だ。
星野金属のALTIUM X 2だ。
MicroATXのケースを買うのは2度目だ。
最初の灰皿町のサーバのケースはUACC-1007b-SLTというもので、8480円だった。今度のは2万3000円もするのに張り込んだ。
これを基にどういうふうに組み立てていくか、今年はゆっくりとやってみるつもり。
Oct 05, 2005
webcam設定ファイルの編集
下がぼくが使っている「.webcamrc」。うまく動かすために下線が、過去にやったwebcamの設定と違う部分。
また前のでは、[ftp]セクションはなく「.netrc]で設定したが、「.webcamrc」にまとめて書けるようになったので、「.netrc」は必要なくなった。
「.webcamrc」のアクセスモードは必ず600にする。
$webcam &
とすると配信が始まる。
[ftp]
host = *****
user = *****
pass = *****
dir = public_html/webcam
file = webcam.jpg
tmp = uploading.jpg
passive = 1
auto = 1
debug = 0
ssh = 0
[grab]
device = /dev/video0
text = "20%y-%m-%d %H:%M:%S"
#width = 160
#height = 120
quality = 75
input = usb
#input = Composite1
rotate = 0
top = 0
left = 6
bottom = -1
right = -1
trigger = 0
once = 0
wait = 10
delay = 120
#norm = NTSC
archive = /home/shimirin/webcam/%y%m%d%H%M%S.jpg
下の引用は、「man webcam」コマンドで出てくるexample。普通これを修正して、「.webcamrc」を作る。
[grab]
device = /dev/video0
text = "webcam %Y-%m-%d %H:%M:%S"
infofile = filename
fg_red = 255
fg_green = 255
fg_blue = 255
width = 320
height = 240
delay = 3
wait = 0
input = composite1
rotate = 0
top = 0
left = 0
bottom = -1
right = -1
quality = 75
trigger = 0
once = 0
[ftp]
host = www
user = webcam
pass = xxxxxx
dir = public_html/images
file = webcam.jpeg
tmp = uploading.jpeg
passive = 1
debug = 0
auto = 0
local = 0
ssh = 0