2005年11月22日

Cygwinでフロッピーディスクイメージを読み書きする。5

元ネタはこちらです。

やり方はこれで正しいかわかりませんが、こんな感じ。

[babydaemon@cygwin-pc ~]$ mkdir /dev
[babydaemon@cygwin-pc ~]$ mkdir /dev/fd0
mkdir: `/dev/fd0' exists but is not a directory
[babydaemon@cygwin-pc ~]$ mount '//./a:' /dev/fd0
mount: warning - /dev/fd0 does not exist.
[babydaemon@cygwin-pc ~]$ dd if=/dev/zero of=/drv/a/zero; rm /drv/a/zero
dd: writing to `/drv/a/zero': No space left on device
2120+0 records in
2119+0 records out
1084928 bytes (1.1 MB) copied, 91.501 seconds, 11.9 kB/s [babydaemon@cygwin-pc ~]$ dd if=/dev/fd0 of=/drv/f/FDDIMG/PQMAGIC8LH1.FDD 2880+0 records in 2880+0 records out 1474560 bytes (1.5 MB) copied, 41.429 seconds, 35.6 kB/s

ちゃんと1440KB(2880ブロック、512バイト/ブロック)、
コピーされているのがわかります。。

全然Unixと変わらないじゃないですか!(^^)/

#/dev配下がdevfsみたいに既にspecial fileが用意してあるのが、
#ちと気持ち悪いですが。
#しかも、/devがファイルシステム上に存在しないというのが。。。

ちなみにdd if=/dev/zero of=/drv/a/zero; rm /drv/a/zeroとやっているのは、
後でbzip2とかで圧縮した際によーく圧縮されるようにです。

vectorからFloppyi(MS-DOS/ユーティリティ)を落とさなくても大丈夫です。

#日本語で使いたい人はこちらをどうぞ。(^^)
#ディレクトリorファイル名にスペースを含むとうまく動かないようですが。。。(^^;


「赤ちゃん妖精日記」がGoogle様に見捨てられてしまいました。1

Livedoor版「赤ちゃん妖精日記」Google様に見捨てられてしまいました。
焦った私はGoogle(Blogger)版「赤ちゃん妖精日記」を作ってみました。

Google様のお膝元ならばすぐに見つけてもらえるかなーという魂胆です。(^^;

#でも、うまく出来てない。

とりあえず、dual更新を目指します。

#出来るのか???

 


2005年10月08日

FreeBSDでsmbfs関連のkernel moduleをstatic linkしてみる

rootにならなくて、mount_smbfsしてみたときのことです。

[babydeamon@family ~]$ mount_smbfs //babydeamon@windows/Downloads smbfs/
Warning: no cfg file(s) found.
mount_smbfs: can not setup kernel iconv table (default:tolower): syserr = Operation not permitted
[babydeamon@family ~]$

と怒られます。(;_;)

 


2005年10月07日

MS-DOSバッチファイル(*.bat)やWindowsNTコマンドスクリプト(*.cmd)をお好みのエディタで編集する

今回は珍しく画像満載です。(爆)

*.batと*.cmdでは手順が同じなので、*.batだけ載せておきます。

registeredFileTypesBAT0.png
























まず、,痢新規(N)」をクリック。

registeredFileTypesBAT2.png






















,痢詳細設定(V)」をクリック。

registeredFileTypesBAT3.png















アクション(A)」で「edit」を選択して、,痢編集(E)...」をクリック。

registeredFileTypesBAT4.png








,痢参照(R)...」をクリックして、

registeredFileTypesBAT5.png

















お好みのエディタ(ここでは秀丸)を選択して、,痢開く(O)」をクリック。

registeredFileTypesBAT6.png










 アクション(A)」を日本語に書き換え、
アクションを実行するアプリケーション(L):」の.exeの後に
"<半角スペース>%1"を追加し(この手順は省略可能)、
OK」をクリック。

registeredFileTypesBAT8.png


























エクスプローラで右クリックして「編集(E)」を選ぶと、
#ちなみに"edit"を書き換えないとここで「edit」と表示される。

registeredFileTypesBAT7.png





























お好みのエディタ(ここでは秀丸)が起動します。


2005年09月30日

/bin/sh & /bin/bashのstderrのリダイレクト

お仕事でperl scriptの見直しでCygwinのperl.exeの-wオプションを使っていたときのことです。

見直し対象のスクリプトが最初から

#!/usr/bin/perl -w

で書いてあれば良かったのですが"-w"が無かったので、
いざ"-w"を付けてみるとそれなりの数のエラーをperlが見つけてくれました。(^^;

私のlogin shellはtcshなので、下記のようにリダイレクトしてログファイルを取ります。

[babydaemon@cygwin ~]$ echo $SHELL
/bin/tcsh
[babydaemon@cygwin ~]$ perl -w some-script.pl >& some-script.pl.log
[babydaemon@cygwin ~]$

ループの中にバグがあると、同じwarrning messageが複数出て見づらいので、
重複する行は下記のコマンドで削ってあげます。

[babydaemon@cygwin ~]$ cat some-script.pl.log | sort | uniq > some-script.pl-uniq.log

見直しなので、バグがあるソースファイル名・行番号・エラーメッセージ・
コーディングミスの影響度・改修要否・改修方法を一覧表にしたほうが、
レビューのときに都合がいいでしょう。

一覧表といえばいくらM$が嫌いでもExcelがディファクトスタンダード。
M$でないツールとExcelを結ぶ唯一の架け橋が.CSVファイル。

という訳で、some-script.pl-uniq.logを.CSVファイルに
整形してあげると良いということになります。

ところが、ログファイルをテキストエディタで.CSVに直すのはかったるい。
見直し対象のスクリプトが1本だけなら、秀丸のキーボードマクロでも
どうにかなったでしょうが、残念ながら対象のスクリプトが5本程度あります。(;_;)

#今、考えると、cat *.pl-uniq.log > review-uniq.logとやって、
#review-uniq.logをガリガリ編集しても良かったのかも。(^^;

スクリプトの実行結果+perl -wのWarring Messageのログファイルを
some-script.pl.logと、some-script.pl.logを.CSVに整形した結果を
some-script.pl-Warrnings.csvと命名することにします。

ログを整形するのはperl scriptですから、ログ整形スクリプトの中から、
見直し対象のスクリプトを実行してログを吐かせたほうが楽ができます。

#!/usr/bin/perl -w
$target = $ARGV[0];
$targetLog = "$target.log";
$warrningMessages = "$target-Warrnings.csv";
system "perl -w $target 2>&1 1>$targetLog";
# <以下、略>

#懸命な人はもう既にオチが判っているでしょう。(^^;

ログ整形スクリプトを実行しても、perl -wのWarrning Messageが
コンソールに出力されるじゃありませんか。(;_;)

試しにPerlの中からでは無く、直接Shellに対して実行させてみることにしました。

[babydaemon@cygwin ~]$ cat ./temp.pl
#!/usr/bin/perl -w
$temp;
[babydaemon@cygwin ~]$ sh
$ ./temp.pl 2>&1 1>temp.log
Useless use of a variable in void context at ./temp.pl line 3.
Name "main::temp" used only once: possible typo at ./temp.pl line 3.
$ exit
[babydaemon@cygwin ~]$ bash
[babydaemon@cygwin ~]$ ./temp.pl 2>&1 1>temp.log
Useless use of a variable in void context at ./temp.pl line 3.
Name "main::temp" used only once: possible typo at ./temp.pl line 3.
[babydaemon@cygwin ~]$ exit
[babydaemon@cygwin ~]$

/bin/sh(Cygwinの場合は実体は/bin/ash.exe)だけでなく、
由緒正しい(?)/bin/bashでもダメじゃないですか。(;_;)

もしかしてCygwinのshやbashはバグってる?と疑ったのですが、
とりあえずsystem関数ではtcsh -cでスクリプトを実行して回避したのでした。

#ここで由緒正しい(!)Solaris2.7でも確認しておけば、
#いたらん時間を掛けないで済んだのでした。(^^;;;;

帰宅して由緒正しい(?)FreeBSDで確認すると同じ結果。

バグってるのはCygwinではなく、自分らしい。。。(;_;)

ということを確認して、jman shをやってもう一度やり直してみると、

[babydaemon@freebsd ~]$ sh
$ ./temp.pl 1>temp.log 2>&1
$ exit
[babydaemon@freebsd ~]$ bash
[babydaemon@freebsd ~]$ ./temp.pl 1>temp.log 2>&1
[babydaemon@freebsd ~]$ exit
[babydaemon@freebsd ~]$

ちゃんとできるじゃないですか!
今朝自宅でインストールしたてのCygwinでやってみると、

babydaemon@cygwin ~
$ echo $SHELL
/bin/bash
babydaemon@cygwin ~
$ ./temp.pl 1>temp.log 2>&1
babydaemon@cygwin ~
$ sh
babydaemon@cygwin ~
$ ./temp.pl 1>temp.log 2>&1
babydaemon@cygwin ~
$

#promptまだいぢってない。。

ちゃんとできるじゃないですか!!
疑ってしまってごめんなさい。m(_ _)m > Cygwin様

今日の教訓:Borne Shell Scriptのstderrのリダイレクトは、順序が重要!

#って、以前も同じ罠にはまっちゃったような気がするなー。
#どっかの商用UNIXのsh(1)のmanpageか、
#どっかの書籍に注意書きで書いてあった気がする。

#一応、普段はShell Scriptは/bin/shで書くんだけどなー。


2005年09月29日

Cygwinの謎に迫る2

「アプリケーションの追加と削除」からアンインストールできないCygwin

bashやtcshのコンソールからmountコマンドで、Windowsディレクトリを
POSIX Pathにマウントしても、/etc/vfstabが更新されないCygwin

setup.exeでパッケージを追加しても、/var配下のディレクトリに
パッケージの情報が追加されないCygwin

FreeBSDなら/var/db/pkgにパッケージのインストール情報が記録される。

CygwinもWindowsアプリケーションである以上、
ファイルシステムに情報が記録されていないということは、
あの忌まわしきレジストリに情報が記録されているに違いありません。(;_;)

今回、たまたま自宅に、インストールしたてのWindows2000 Server SP4の
環境があったので、Cygwinのインストール前後でレジストリを比較してみました。

ご存知かも知れませんが、Windows全体のレジストリを保存するには
「レジストリ エディタ(regedit.exe)」を起動して、

「レジストリ(R)」
→「レジストリ ファイルの書き出し(E)...」
→書き出し範囲を「すべて(A)」を選択

で行います。

レジストリファイル(*.reg)はWindows2000以降はUTF16になりましたので、
通常のテキストファイルを扱うツールではちとマズイことになりますので、
比較的新しいバージョンの秀丸かVersion 2.00以降のnkfでUTF8に
変換してあげます。

ご存知かもしれませんが、UTF16はコード体系がUnicodeで
全文字が16bit/charactorのエンコーディング。つまり、JavaのStringと
まったく同じです。
UTF8はコード体系がUnicodeでいわゆるASCII文字は8bit/charactor
だけど、日本語等マルチバイト文字が24bit/charactorという、

全くもって欧米圏の人間には都合がいいが、
アジア圏の人間には都合が悪い

エンコーディングです。(^^;

#でも、Unicode→SJIS(というかJIS)に変換できない文字を維持したまま、
#UTF16対応でないテキスト処理ツールに掛けるにはUTF8以外に選択肢がない。(;_;)

書き出したWindows全体のレジストリはこんな感じです。

Administrator@babydaemon /profiles/Administrator/My Documents
$ ls -l Windows2000ServerSP4-*
-rwx------+ 1 Administrators なし 34810566 Sep 29 00:40 Windows2000ServerSP4-0.reg
-rwx------+ 1 Administrators なし 17520691 Sep 29 08:18 Windows2000ServerSP4-0.reg.utf8
-rwx------+ 1 Administrators なし 35691942 Sep 29 06:55 Windows2000ServerSP4-1.reg
-rwx------+ 1 Administrators なし 17963555 Sep 29 08:18 Windows2000ServerSP4-1.reg.utf8
Administrator@babydaemon /profiles/Administrator/My Documents
$

UTF8のレジストリファイル同士で差分を取ってあげます。

Administrator@babydaemon /profiles/Administrator/My Documents
$ diff -c Windows2000ServerSP4-[01].reg.utf8 > Windows2000ServerSP4.reg.utf8.diff
Administrator@babydaemon /profiles/Administrator/My Documents
$

出来上がったWindows2000ServerSP4.reg.utf8.diffを秀丸などで開いてみます。
Cygwinに関係ありそうなレジストリはこちら。

*** Windows2000ServerSP4-0.reg.utf8 Thu Sep 29 08:18:09 2005
--- Windows2000ServerSP4-1.reg.utf8 Thu Sep 29 08:18:46 2005
***************
*** 200558,200563 ****
--- 204724,204751 ----
  [HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\IEXPLORE.EXE\InstallInfo]
  "IconsVisible"=dword:00000001
  
+ [HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions]
+ 
+ [HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin]
+ 
+ [HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2]
+ "cygdrive prefix"="/cygdrive"
+ "cygdrive flags"=dword:00000022
+ 
+ [HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/]
+ "native"="C:\\cygwin"
+ "flags"=dword:0000000a
+ 
+ [HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/usr/bin]
+ "native"="C:\\cygwin/bin"
+ "flags"=dword:0000000a
+ 
+ [HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/usr/lib]
+ "native"="C:\\cygwin/lib"
+ "flags"=dword:0000000a
+ 
+ [HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\Program Options]
+ 
  [HKEY_LOCAL_MACHINE\SOFTWARE\D-Tools]
  "dr347_0"="8d1f41bfbb7ecc4e"
  "dr347_1"="cac17e30e553cc5d"
***************

うーん、mount関係のレジストリしか見つかりませんでした。
パッケージ情報はどうやって管理してるんでしょう?

やっぱ、ソース見ないとだめかなー。(;_;)


2005年09月15日

いまさらながら9.11衆院選を振り返る

みなさん、9月11日日曜日には投票に行きましたか?

今回は、小泉さんのおかげで国民の関心が高かったらしく、
投票率が60%台半ばまで上がったらしいです。
事前投票した人も多かったみたいです。私と嫁さんも事前投票組です。

#投票率、事前投票者数とも具体的な数字を
#新聞報道(というかYahoo!ニュース等の新聞記事)で
#知っていたのですが、失念。(;_;)
#各自、ググって調べてください。m(_ _)m

#2ちゃんねるだと、「ソースは?」と鋭く突っ込まれそう。orz

さて、私が投票する選挙区は福岡3区だったんですが、
翌朝、9月12日月曜日に結果を知りたくて、Yahoo!やらMSNやらで
新聞系のニュースを見まくったのですが、注目選挙区ならいざ知らず、
福岡3区に関する記事は見つけきれませんでした。(;_;)

こういうときは、地元ブロック紙のサイトを見てみるのが正解のようです。
という訳で、西日本新聞の2005衆議院選挙速報はこちら。

このネタについては、前にここで書きましたが、私の執った行動は

小選挙区:藤田一枝氏(民主党)
比例区:自由民主党

というふうに投票でした。

自民党の太田誠一氏は、旧来型の自民党代議士のような印象があったし、
私はもともと福岡の人間ではないので太田誠一氏のことは良く知らないし、
第一、藤田一枝氏とは西新プラリバ前で直接話す機会があったので。

私は電機連合と関係があった人間なので、もともとは民主党支持者なんですが、
今回の郵政民営化法案審議における民主党岡田代表の行動には、
著しく反感を覚えていました。

また、親戚にイオンにパートで勤める人がいるので、
以前からイオンの社風や福利厚生について聞いていました。
いくらパートとはいえ、

電機連合等、あちこちの労働組合から多大な
支援を受けながら、自分のところはどうなってるの!

ってずっと反感を覚えてました。

ですので、藤田さんには勝って欲しいけど、
民主党としては負けて岡田さんは代表を辞めてもらいたいと
いう思いがあって、あのような票を投じたわけです。

藤田さんと話した感じでは、私がぶつけた質問が藤田さんの専門外
だったらしく、つぼを得た回答が返ってきませんでしたが、
誠意は感じられました。

あとで、藤田さんのサイトを拝見しましたが、ある程度実績が
ある人みたいで、先に触れたように誠意がある人
(つまり、勉強熱心である可能性が高い)なので、
発展途上ながら将来が期待できる人物だと感じたわけです。

まぁ、太田氏についてはまじめに調べてないので、
公正な評価ではないかもしれません。
まぁ、私は政治評論家ではありませんので、
個人としては比較的調べたほうではないでしょうか?

#と、言い訳してみる。(^^;;;

なんといっても私が投票した時点では、
選挙公報が配達されていませんでしたし!

民主党の固定的な支持母体は労働組合であるにしても、
一番の支持者は無党派層であるわけで、民主党の今後を考えていく上で、
いかに無党派層を選挙のたびにより有利にひきつけておくか
考えておく必要があるはずです。

#そりゃ、次の代表選びは大事だけど。
#毎日新聞は社説で岡田さん自分で敗戦処理せいって書いてたぞ!

少なくとも、事前投票が出来るなら事前に選挙公報は入手できるべきで、
選挙公報の配達が投票日前日になっている現状の制度は改める必要が
あります。

#忙しくて、法令データ提供システムでこの制度の
#根拠法令なり政令なりを調べる暇が無い。

選挙公報が事前にPCやケータイで見れたりするとなお良しでしょう。
もちろん、選挙公報は選挙管理委員会が管理する
HTTPSのセキュアなサーバで公開する必要がありますが。

ついでに言うと、投票がPCやケータイで24時間できるとなお良しです。
これも、選挙管理委員会が管理するHTTPSのセキュアなサーバに対して
投票する必要がありますね。

問題は、投票者本人の認証のやり方です。
投票所入場券に振られた番号+本人の生年月日で認証だと、
ちとセキュリティが甘い気がします。プラス住民票コード(だったかな?)
だと、ある程度大丈夫そうな気がしますが、そもそもそのコードを
覚えている国民がどれくらいいるかと言う気がしますね。

#私も、住基ネットカードはもってませんし。

要は、投票率を上げる方法を真剣に考えないと
民主党は有利に戦えないと言うことです。

まぁ、これらの改正が実現するとなると、

電機連合関連の会社(富士通、日立、NECなど)に特需が発生

して、絶大な支持を得られるというのもありますけど。(^^;


2005年09月11日

Cygwinでのsshdの動かし方

この苦労はなんだったんでしょう?

結論から書くとこちらです。(爆)

[babydaemon@cygwin ~]$ ssh-host-config
Generating /etc/ssh_host_key
Generating /etc/ssh_host_rsa_key
Generating /etc/ssh_host_dsa_key
Generating /etc/ssh_config file
Privilege separation is set to yes by default since OpenSSH 3.3.
However, this requires a non-privileged account called 'sshd'.
For more info on privilege separation read /usr/share/doc/openssh/README.privsep.
Should privilege separation be used? (yes/no) yes
Warning: The following function requires administrator privileges!
Should this script create a local user 'sshd' on this machine? (yes/no) yes
Generating /etc/sshd_config file
Added ssh to C:WINNTsystem32driversetcservices
Added ssh to /etc/inetd.conf

Warning: The following functions require administrator privileges!
Do you want to install sshd as service?
(Say "no" if it's already installed as service) (yes/no) yes
Which value should the environment variable CYGWIN have when
sshd starts? It's recommended to set at least "ntsec" to be
able to change user context without password.
Default is "ntsec".  CYGWIN=ntsec
The service has been installed under LocalSystem account.
To start the service, call `net start sshd' or `cygrunsrv -S sshd'.
Host configuration finished. Have fun!
[babydaemon@cygwin ~]$ cygrunsrv -S sshd

これに気付いたきっかけは、vimあたりのパッケージを追加しようと、
Cygwinのsetup.exeを起動してSelect PackagesのCategoryがAdminの中で、
「cygrunsrv: NT/W2K service initiator」とか見つけたから。

きっと、cygrunsrvコマンドで、Cygwin上のプロセスをWindowsのサービスとして
登録するんだろうなぁと思って「cygrunsrc sshd」でググると、あるわあるわ、
Windows(Cygwin)でSSHを動かすHOWTOのページがいっぱいです。(^^)

#みんな考えてることは同じですね。(^^;

そんなページ達の中で、ssh-host-confというコマンドを見つけたのです。(^^)/

それにしても、学生時代にCygwinを使ってた頃に比べると、
信じられないくらいに便利になったものです。
日本語ロケールもEUCならそれなりに動くみたいですし。
(下記の実行例はTeraTermの表示encodeingがEUC)

[babydaemon@cygwin ~]$ setenv LANG ja_JP.EUC
[babydaemon@cygwin ~]$ df
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
C:Program FilesJavajdk1.5.0_04
                      10482412   5844128   4638284  56% /java
D:shingo XNgbv
                       4192932   1210400   2982532  29% /desktop
C:Program Files      10482412   5844128   4638284  56% /programfiles
D:cygwin.home         4192932   1210400   2982532  29% /home
C:cygwinin         10482412   5844128   4638284  56% /usr/bin
C:cygwinlib         10482412   5844128   4638284  56% /usr/lib
C:eclipse            10482412   5844128   4638284  56% /eclipse
C:cygwin             10482412   5844128   4638284  56% /
E:mirror             31286552  27094780   4191772  87% /mirror
C:WINNT              10482412   5844128   4638284  56% /windows
D:                     4192932   1210400   2982532  29% /profiles
c:                    10482412   5844128   4638284  56% /drives/c
e:                    31286552  27094780   4191772  87% /drives/e
o:                       62886     62886         0 100% /drives/o
w:                    33551721  29069468   4482253  87% /drives/w
x:                    33551721  20639955  12911766  62% /drives/x
z:                    45953900  45670948    282952 100% /drives/z
[babydaemon@cygwin ~]$

でも、SJISはだめぽらしいです。
(下記の実行例はTeraTermの表示encodeingがSJIS)

[babydaemon@cygwin ~]$ setenv LANG ja_JP.SJIS
[babydaemon@cygwin ~]$ df
Filesystem           1K-・ヨ・テ・ッ    サネヘム   サネヘムイト サネヘム% ・゙・ヲ・鵐ネーフテヨ
C:Program FilesJavajdk1.5.0_04
                      10482412   5844128   4638284  56% /java
D:shingoデスクトップ
                       4192932   1210480   2982452  29% /desktop
C:Program Files      10482412   5844128   4638284  56% /programfiles
D:cygwin.home         4192932   1210480   2982452  29% /home
C:cygwinin         10482412   5844128   4638284  56% /usr/bin
C:cygwinlib         10482412   5844128   4638284  56% /usr/lib
C:eclipse            10482412   5844128   4638284  56% /eclipse
C:cygwin             10482412   5844128   4638284  56% /
E:mirror             31286552  27094780   4191772  87% /mirror
C:WINNT              10482412   5844128   4638284  56% /windows
D:                     4192932   1210480   2982452  29% /profiles
c:                    10482412   5844128   4638284  56% /drives/c
e:                    31286552  27094780   4191772  87% /drives/e
o:                       62886     62886         0 100% /drives/o
w:                    33551721  29069468   4482253  87% /drives/w
x:                    33551721  20639955  12911766  62% /drives/x
z:                    45953900  45670948    282952 100% /drives/z
[babydaemon@cygwin ~]$

CygTermを使ってTeraTermからコマンドを叩いていると、
操作している相手がWindowsという感じがあんまりしません。
会社だと特にそうですが、SolarisとかLinuxにsshでログインしてる
TeraTermがあると、「127.0.0.1」で「あ、localのCygwinだった。(^^;」と
気付く始末です。

そんなんですので、CygTerm.cfgでTeraTermのコマンドラインを指定する際に、

-W CygTerm

を入れることにしています。

それにしても、Windowsでsshdが動くといろんなことが出来ますね。
複数セッションのログインが安全に出来るとか、
rsyncで高速にディレクトリツリーのコピーが出来るとか。

開発環境がWindowsのソフトハウスだと、ウィルススキャンソフトが
PCの全ファイルI/Oを監視していると思いますが、ネットワークドライブとの
間でファイルコピーをすると、例えばローカル→リモートのコピーでは、

.蹇璽ルマシンで、HDDからリード時にウィルススキャン
▲蹇璽ルマシンで、リモートのネットワークドライブにライト時にウィルススキャン
リモートマシンで、リモートのネットワークドライブからリード時にウィルススキャン
ぅ螢癲璽肇泪轡鵑如HDDへライト時にウィルススキャン

となるわけです。(一番厳しい条件での話ですが。)
コピーするファイルが圧縮ファイルなら最悪です。(;_;)

これが、ssh+rsyncだと、

.蹇璽ルマシンで、HDDからリード時にウィルススキャン
▲螢癲璽肇泪轡鵑如HDDへライト時にウィルススキャン

ですむ可能性があるわけです。しかも、会社の運用ルールを
破ることなく合法的にウィルスチェックを2回回避しているわけです。

さらにssh+rsyncだと、差分ファイル群の圧縮ファイルを作ることなく、
ファイルの変更分を圧縮してコピーできます。

続きを読む

2005年09月09日

転ばぬ先のバックアップ3

現在、仕事で関わっているプロジェクトでeclipse-3.1&JDK5.0で開発しているですが、
eclipseのworkspaceを不注意で消してしまいました。(;_;)

#どうでもいいですけど、JDK5.0というVersion NumberはSolaris7っぽいですね。
#minor version(小数部)がmajor version(整数部)に格上げと言う事で。

幸い、別のPCにディレクトリツリーごとコピーしていたんで、事なきを得たんですが、
非圧縮の状態で100MB程度のファイルをネットワーク越しにコピーするのは、
いくらLANで100Base/TXとはいえ、混んでるオフィスLANでは酷なことです。
今回はサブネットが違ったので、なおさらです。

#なんで、非圧縮だったかって?それは圧縮すると、
#ウィルスチェックに死ぬほどCPUパワーを喰われるから。(爆)

普通にExplorerでコピーしてたら発狂しそうでしたので、
今回はDisk Mirroring Toolを使うことにしました。
別にxcopyでも良かったんだけど、たまたまインストールしてし、
寝ぼけて途中で^Cを押してしまいそうなので。
(別にxcopy /dで再度コピーすれば済む話ですが。)

#rsyncを使うのがかっちょいいのかも知れませんが、
ここで書いてる通り、sshdがうまく動かせないのです。(;_;)

無事にrestoreが完了したら、すぐさまローカルにバックアップを取りました。
そもそも、今回の操作ミスでのファイル消失は、ディスクの空きを確保する
ためにやっちゃったので、必然的に圧縮アーカイブでバックアップを
取らなければなりません。

1000ファイルを超えるアーカイブなので、GUIで扱うと固まったようになります。
実際、LH○T32がWindowsに「応答なし」と言われてしまうことがしばしば。

#一応、会社のノートPCはPentium M 2.2GHzなんですけど。。。

コマンドラインで扱えるアーカイバで圧縮率とCPU時間のバランスが良くて、
なおかつ、思い通りにファイルの圧縮・展開が出来ると言えば。。。

そう!tar+gzipです!
#別にtar+bzip2でもいいんだけど単なる慣れの問題。(^^;
#ちと、gzipよりはCPU喰うし>bzip2
#今回はそんなに圧縮率がシビアに要求されているわけではないので。

早速、CygTermのtcshからコマンド叩いて圧縮します。

[babydaemon@notepc /]$ tar cvzf /backup/workspace200509081324.tar.gz workspace

eclipseのworkspaceはD:\workspaceにあります。
バックアップはD:\Backupに取ることにします。
Cygwinから扱うときにドライブレターがうっとうしいので、
事前に下記のようにmountしておきました。

[babydaemon@notepc /]$ mkdir /workspace; mount 'D:workspace' /workspace
[babydaemon@notepc /]$ mkdir /backup; mount 'D:Backup' /backup

一日、お仕事を終えたら、以下のコマンドで一日分の差分バックアップを取りましょう。

[babydaemon@notepc /]$ find workspace -newer /backup/workspace200509081324.tar.gz > /backup/newfile200509082326.txt
[babydaemon@notepc /]$ tar cvzf /backup/workspace200509082326.tar.gz -T /backup/newfile200509082326.txt

更新されたファイルが少なければ、findの出力をback quoteでtarに渡して良いんですが、
ファイルが多すぎて「tar: argument too long.」と起こられてしまいます。(;_;)

後は、毎日上の2行のコマンドを叩いて差分バックアップを取れば完璧です。
フルバックアップよりも終電や終バスに乗り遅れる可能性が減ります。(^^;
でも、金曜日(よじれたプロジェクトでは土曜日or日曜日)には、
フルバックアップを取るのが良いかもしれません。

やろうと思えば、shell scriptで上の2行は簡素化できますね。

#!/bin/sh
latest_archive=`ls -t -r -1 /backup/workspace*.tar.gz | tail -1`
datetime=`date "+%Y%m%d%H%M"`
cd /
find workspace -newer $latest_archive > /backup/newfile$datetime.txt
tar cvzf /backup/workspace$datetime.tar.gz -T /backup/newfile$datetime.txt

思いつきで書いて試していませんので、念のため。

◎おまけ◎
Cygwinでやっておくと良さげなmountコマンド達。

[babydaemon@notepc /]$ mount -c /drives
[babydaemon@notepc /]$ mount 'C:WINNT' /windows
[babydaemon@notepc /]$ mount 'C:Documents and Settings' /profiles
[babydaemon@notepc /]$ mount 'C:Program Files' /programfiles
[babydaemon@notepc /]$ mount 'C:eclipse' /eclipse

mount先のディレクトリは事前に作って置きましょう。(^^)


2005年09月05日

9月11日休めねーよーというみなさん〜!

もう、不在者投票には行きましたか?
うちの夫婦は通院で休みを取った9月1日の昼下がりに、
区役所に投票に行きました。

本来形なら、投票所入場券のハガキを
持参で行くのが正しいのですが、
バタバタしてたし何処に行ったか行方不明なので、
現地で書類を書いて投票しました。

9月11日休めねーよーというみなさん!
今からでも遅くありません。
着の身着のまま、20:00までに
区役所・市役所・町役場・村役場に
駆け込みましょう!

#でも、20:00までに駆け込めないのがIT業界の悲しい性だったりする。(;_;)

さて、政権が取れる可能性がある政党の公約(マニフェスト)を
おさらいしておきましょう。

自民党はこちら。民主党はこちら

ともに斜め読みしてみましたが、内容に大差はありません。
#内容が無いようって!まぁ、政治の世界ではお約束ですから。(;_;)

自民党のヤツは120項目にも渡っております。
獲得議席数に幅があるにしろ、おそらく政権を取るのは自民党ですから、
わざわざ120項目にも分けてあると、どれが実現されているかチェックしやすいですね。

アイランドシティで物議をかもし出している山崎 福岡市長でも、
福岡市役所のどっか(詳しいURL失念)でExcel作った表をPDFで
マニフェストチェックリストを公開してましたので、ぜひ自民党でも
やってもらいたいところではあります。

#期待はしてませんが。

チェックリストを作るために、マニフェストの控えを取っておきましょう。

someone% wget -m http://www.jimin.jp/jimin/jimin/2005_seisaku/120yakusoku/

民主党のヤツは、 (<A3版>PDF版 21.5MB) の方が見易いです。
#ちぇ、PDFかよ。Acrobat Reader起動待つのうざいなー。(^^:

こちらも万が一、民主党が政権を取ったときの為に、マニフェストの控えを取っておきましょう。

someone% wget http://www1.dpj.or.jp/manifest/Manifesto_2005.pdf

いつものことですが、どちらの公約(マニフェスト)にも

政策実現の為の財源の裏づけがありません!

ところどころ、定性的な議論があるところも
無いことも無いですが、それより知りたいのは、

定量的な財源についての議論です!

はっきり言ってしまえば、
今回の衆院選は「郵政民営化」を信任するかどうかを問う選挙でしょう。
年金改革・フリーター対策などはどちらの党もマニフェストで書いていますが、
やりたいことはあまり変わりなく、それは誰がやってもある程度は実現するでしょう。でも、

郵政民営化→株式公開は小泉さん&竹中さんでしかできない

と私は個人的に思っております。この株式公開が重要だと個人的に考えております。
#ちなみに民主党は郵政民営化は効率化・規模縮小を挙げているが、
#民営化→株式公開までは踏み込んでいない。

私が以前、日経リサーチのアンケートサイトに寄せた文章がありますので、
時間がある人は、御読み下さいませ。

#と、思ったら、その文章会社に忘れてきちゃった。(^^;;;