Solarisがやってきた
1999年3月某日、我が職場にSolarisがやってきた。本当は来て欲しくなかったが来てしまった。
なぜかというとUnixがよく分からない。ただそれだけ。
大きなガタイの富士通製のグランパワーというのに入っているらしい。
早速、箱を空けてSETUPが始まった。ちょっと他人事みたいですが、実は搬入した松浦(実名)さんが
快く(松浦さんがSolarisのSETUPがしたかった)SETUPを引き受けてくれたから。まあそれが後になって
面倒なことになってしまったが・・・・・。
ここいらでなんでSolarisがやって来たか説明しないと。職場には大きなUnixサーバ(DS)がたくさん(12台)あって
そのアプリケーションとかデータを月1で夜DATでしこしこバックアップしてるんですが、7〜8時間かかってうんざりらしい
(これも他人事で私は1回もバックアップをやったことがない)。なんか簡単に時間もかからずできないかって、
ない知恵絞って考え、1年前「パソコンで」て口走ってもうた。何もいわなかったらずーと他人事で済んでたのに。
DATチェンジャーとかUnixサーバ(SUN)とか懐(会社)状態とか人間関係とかいろいろ1年考えSolaris(グランパワー)に。
1:パソコンからtelnetで入れない。
パソコンでタームソフトを立ち上げrootで入るがパスワードを入れると勝手にタームソフトが閉じてしまうなんぜや?。
早速SUNのサイトへ、マニュアルを閲覧するがその量の多さにヘドが出る。
3日かかって「/etc/default/login」の「CONSOLE=/dev/console」を
コメントにすれば入れることがわっかた。
2:どうやってデータをSolarisにもってくるか
知ってるコマンドはrcpしかない。rcpをサーバ間でするには? 分からないときはSUNサイトに。
hostsと.rloginを設定してrcpを発行してみると
動いた。なんだできたじゃん簡単じゃん。それでまた口走った「cgiで」やるって。私はバカです。
その翌日何気なくman rcpとたたき顔から血の気が引いた
「rcp は、シンボリックリンクを正しく処理しません。シンボリックリンクまたは名前付きパイプを含んだディレクトリのリモートコピーをするには、
tar ( tar(1) 参照 ) または cpio ( cpio(1) 参照 ) を rsh にパイプして使用してください。」どういうこと!! 前日rcpでバックアップしたものを
恐る恐るみるとリンクは見事に切れてた。意味ないじゃん。tarやcpioをrshにパイプして・・・? 難しい!
そういえばサーバの12台はメーカが作ったんだからそんなようなコマンドが有るかも!? 有りました(早い) その名も「rcpio」。
しめしめこれでできるってか! そんなに甘くない いくらやってもエラー(ヘッダ情報がどうのこうの)DS同士はエラーは出ない。
しゃーない「rcpio」なるコマンド(shell)を解析するか
REMSH=/usr/bin/rsh
ID="$LOGNAME"
if [ $# -ge 1 ]; then
HOST=$1
shift
fi
while [ $# -ge 1 ]
do
case $1 in
-o*)
MODE=1
OPT=$1
;;
-i*)
MODE=2
OPT=$1
;;
-p*)
MODE=3
OPT=$1
;;
-l*)
shift
ID=$1
;;
*)
if [ $# = 1 ]
then
DEV=$1
else
PTN="$PTN \"$1\""
fi
;;
esac
shift
done
if [ "$HOST" = "" -o "$MODE" = "" -o "$DEV" = "" ]
then
echo "Usage: rcpio host-name [-l login-name] -o[acvB] device-file-name < name-list"
echo " -i[cdmtuvB] [pattern] device-file-name"
echo " -p[dmuv] remote-directory-name"
exit 1
fi
if echo "$OPT" | egrep B > /dev/null
then
BLOCK=5120
else
BLOCK=512
fi
if [ $MODE -eq 1 ]
then
cpio $OPT | $REMSH $HOST -l $ID "dd obs=$BLOCK of=$DEV"
exit 0
fi
if [ $MODE -eq 2 ]
then
$REMSH $HOST -l $ID "dd ibs=$BLOCK if=$DEV obs=$BLOCK" | dd obs=$BLOCK | eval "cpio $OPT $PTN"
exit 0
fi
if [ $MODE -eq 3 ]
then
OPT=`echo $OPT | sed -e 's/-p/-i/'`
cpio -oB | $REMSH $HOST -l $ID "cd $DEV;dd obs=5120 | cpio $OPT"
exit 0
fi
exit 1
てな具合。
1日かかって(shellが全く分からない)無宗教の私が神に祈りたたいたコマンドがこれです。
find . -print | cpio -oB -H odc | rsh ホスト名 -l root "cd ディレクトリー名;dd obs=5120 | cpio -imd -H odc"
結果はOKでした。少し「ホッ」。しかしcgiの件が・・・・。
次に