いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.009 / 読者数:264名

こんばんは,うすだです.

突然ですが,東芝が,Libretto の新機種を,3年ぶりに出しますね.
http://www.dynabook.com/pc/catalog/libretto/050420u1/index_j.htm

私は,トラックポイントとキータッチを重視してますので,だいたい一貫して ThinkPad を使ってきています.
# トラックポイントじゃないと絵が描けない,っていうのもあります.

でも,Libretto みたいな極小ノートに対しては,マウスとかキータッチとか, そういう次元を超越して,ぐっと来ます.
# 同様に,VAIO Type U シリーズにも,以前ぐっと来ました.

Libretto は,初代が出た時から,ぐっと来ていました.誰かが使っているのを見ては, うらやましくて,ふーとため息をついていました.
ですので,Libretto70 を貸してもらえた時は,ものすごくうれしかった覚えがあります. HDD を換装して,Windows と Solaris のデュアルブートにして使わせてもらっていました.
使い勝手は…ご想像通りでしたが,なんせ小さいので,あちこち持ち歩いて, 自分のもののように使い倒していました.

今度のは,どうなんでしょうか.少なくとも,歴代の Libretto よりは, 使い勝手はよさそうです.私は,最近中古で ThinkPad を買ってしまいましたので, もし欲しくなったとしても買えません.あー残念.
店頭に並んだら,トランペットがあこがれな黒人の男の子のように, 眺めてこようと思います.

それでは,今日も,はりきってまいりましょう!

今週のお題 - 別のマシン上にあるディレクトリと同期をとる

サーバ1台をぶんぶん振り回して使い倒す,というのは,小規模な組織にありがちではないかと思います. とはいえ,こわれるとえらいことになりますので, なにかしら代わりになるようなマシンも用意されているのではないかと思います. (用意されてなければ,即効で用意してください.)

万が一サーバが逝っちゃった時に,代替機を使ってくださいということにすれば, 最小限のサービスは使い続けられます.
もちろん,代替機には,あらかじめ,本物サーバのファイルと同じものが存在しないと, 意味ないよねってことになるわけですが.

というわけで,今回は,別のマシンにあるディレクトリ以下を, ごそっとコピーして同期をとってしまおう,ということをやります.

負荷分散のために,複数台サーバがあるとか,テスト用のマシンで確認してから, 本サーバに反映する,なんていうときにも,使えそうです.

はい,それなりにご存知の方はもうおわかりだと思いますが,rsync と ssh を使って, 同期をとります.
あ,それ知ってる,という非初心者の方は,宿題の答えにお進みください.

…さて,異なるマシンの間で,ディレクトリ以下の同期をとるには, rsync コマンドを使います.
ssh などを用いて,ファイルタイプ(リンクやデバイスも)や所有者, タイムスタンプなどもろもろをひっくるめて,まるっとコピーしてくれます.

例えば,自分の /home/httpd 以下を,bunshin というホストの同じところにコピーするには,以下のように実行します.

  % rsync -az -e ssh --delete /home/httpd bunshin:/home/

ここで,-a オプションは,ディレクトリ以下をまるっと同じ状態でコピーしたいときに指定します.
-z オプションは,圧縮して転送します.ネットワークにやさしいです.
--delete オプションは,コピー先にあってコピー元にないファイルがある場合, コピー先のファイルを削除します.完全に同期をとりたい時に指定します.

リモートマシンのユーザ名が異なる場合は,ホスト名の前に @ をつけて, ユーザを指定します.
例えば,先ほどの例で,bunshin 上のユーザが usuda だとすると,以下 のように実行します.

  % rsync -az -e ssh --delete /home/httpd usuda@bunshin:/home/

というわけで,これで,ディレクトリの同期をとることができました.

…いやいや,待ってください.これだと,実行の度に,パスワード入力が必要になります. cron を使って毎日自動で同期をとらせる…ということが,このままだとできません.

そこで,パスワードを入力しなくて済むように,双方のマシンに,ssh の鍵を, あらかじめ仕込んでみることにしましょう.

まずは,鍵を生成します.以下のように実行してください.
ここでは,鍵の名前を synckey としています.

  % ssh-keygen -t dsa -f ~/.ssh/synckey -N ""

すると,~/.ssh 以下に,synckey と synckey.pub というファイルが生成されます. 前者が秘密鍵,後者が公開鍵です.

次に,公開鍵を,リモートのホスト(bunshin)にコピーします.

  % scp -p ~/.ssh/synckey.pub bunshin:~/.ssh/

リモートのホスト上で,コピーした公開鍵を,~/.ssh/authorized_keys に追加します.

  bunshin% cd ~/.ssh
  bunshin% cat synckey.pub >> authorized_keys
  bunshin% rm synckey.pub
  bunshin% chmod 600 authorized_keys

あとは,rsync 実行時に,以下のように指定するだけです.

  % rsync -az -e "ssh -i $HOME/.ssh/synckey" --delete /home/httpd bunshin:/home/

はい,これで,パスワード入力なしに,rsync できるようになりました.

ちなみに,仕込んだ鍵は,rsync 以外でも使用できます.

  % slogin -i ~/.ssh/synckey bunshin

と実行すると,パスワード入力なしで,遠隔ログインできます.

しかし,もし,rsync でしか使わないなら,authorized_keys に追加した行の先頭に, 以下を追加しておいた方が,セキュリティ上安全です.
(\ で折り返していますが,実際は1行です.)

  no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty \
  ssh-dss ABACB3NzaC1kc3MABACBALZ3aJXdXGUJL...

さらに,rsync する元のホストを,from= で限定することもできます.

  no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,\
  from="*.usupi.org" ssh-dss ABACB3NzaC1kc3...

社内LAN などプライベートなところでは,あまり気にしなくていいのかもしれませんが, なにかと物騒な世の中ですので,できる限りの対策をしておくことを,お勧めします.

宿題の答え

先週の問題は,

  指定したメールアドレスからのメールを,携帯などに転送するための
  スクリプトを作ってください.

でした.
答えは,以下をご覧ください.
http://www.usupi.org/sysad/009-1_pl.txt

基本的には,From: の行に,指定したメールアドレス($FORWARD_FROM)が含まれていれば,転送するよフラグ($forward)を立てているだけです.
ただ,複数行にわたる場合もありますので,$from_header という変数にまとめて放り込んでから,判定をしています.

先週の補足

転送に関して,いくつかご意見をいただきました.

  • Reply-To: に From: のアドレスが入ると,そのまま返信できる.
  • オリジナルの To: とか Cc: とか From: とかが本文に入っていると, 誰から誰宛へのメールかがわかってうれしい.

前者は,ごもっともなご意見だと思いますので,宿題の答えのスクリプトに, あらかじめ入れておきました.
http://www.usupi.org/sysad/009-1_pl.txt

後者も,携帯宛の時には便利ですね.以下のようにしてみました. http://www.usupi.org/sysad/009-2_pl.txt

もうちょっときれいに書けるようにも思いますが,わかりやすいってことで, 許してください.
また,MIME でエンコードされた文字列が,そのまんまですので,なんじゃこりゃ状態かもしれません.(もちろん,アドレスは読めますが.)
エンコードされた部分を切り出して,MIME::Base64 でデコードすれば解決すると思いますが…今後の課題とさせていただきます.ごめんなさい.

今週の宿題

今週の宿題は,こちらです.

  今日やったディレクトリの同期を,cron で毎日実行するように設定して
  みてください.

Vol.002に,答がほぼ書いてあります.
以下を眺めながら,気晴らしにやってみてください.
http://www.usupi.org/sysad/002.html

あとがき

冒頭で,頑丈さで ThinkPad を選ぶと書きましたが,私が使っていた歴代の ThinkPad は,すべてどこかがおかしくなりました.
今使っている X24 も,最近,LAN が動かなくなりました.…不便です.

いや,それでも,歴代のやつらに比べると,まだいい方です.
液晶が映らなくなったりとか,HDD を認識しなくなったりとか, その後の使い道に困るようなこわれ方をしてくれています.
ThinkPad は頑丈さが売りのはずなので,相性が悪いのでしょうか….
# ほとんど中古で購入しているから,というのもありそうですが.

さて,いよいよ,泣く子も黙るゴールデンウィークですね.(ふるっ)

読者のみなさんは,多忙な仕事のことを忘れ,ハワイのビーチなんぞで, まったりとお休みを満喫されるご予定なのではないかと思います.
自然の色とは思えない原色ばりばりなカクテルを片手に,常日頃の戦いを しばし忘れ,夕日を眺めながら,体と心をリフレッシュ!!!

…そんな状況の中では,メールなんて一切見ないでしょうし,Linux 上でいっちょ試してみるか! なんて全くありえない.ですよね.ね.

前置きが長くなりましたが,そういうわけで,来週は,さくさくさくっとお休みをいただいてしまおうと思います.
もちろん,その次の 5/8 には,ちゃんと発行します.
そういうことですので,すみませんが,よろしくお願いします.

今週も,ここまで読んでいただき,ありがとうございました.
それでは,ハワイでお会いしましょう!

「いますぐ実践! Linux システム管理」の登録・解除は,以下からどうぞ.
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーはこちら.
http://www.usupi.org/sysad/backno.html

「栗日記」も,毎日毎日発信中!
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本