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

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


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

こんばんは、うすだです。

わたくし事で恐縮ですが、3月に納めるお仕事が佳境に入っております。

切羽詰まってくると、1月にもうちょっとやっときゃよかったなあとか、 後悔先に立たず的なことばかりが、頭をよぎります。

以前、その日のやることを細かく分けて箇条書きにして、 実行し終えたらチェックして達成感を得る、という方法をご紹介しました。

もちろん、いまもやっているのですが、長期的な視野で見ていないとか、 期限を設けていないなどの点で、タスク管理的には不十分だという気が、 切羽詰まったいまになって、非常にしています。

ということで、はやりの GTD を、ようやくやってみようと思ったのですが、 最初の、「やるべきこと」を「すべて」書き出すという大きな壁を前にして、 躊躇してしまっています。

ITmedia Biz.ID : Getting Things Done (GTD) まとめ
http://www.itmedia.co.jp/bizid/gtd_index.html

本来なら、いまこそ実践すべきはずなのですが、その気になれません。
言い訳以外のなんでもありませんが、一段落したら着手して、 習慣として定着させようと思います。

ああもう! な感じですが、今回も、押し切ってはりきりたいと思います。

今回のお題 - リモートバックアップについて考えてみる

システム管理者の仕事といえば、マシンのセットアップからユーザの教育まで、 ありとあらゆる活動が含まれるのではないかと思います。

そんな中でも、もっとも重要と言えるお仕事のひとつに挙げられるのが、 バックアップだと言えます。

百年に一度の大不況をむかえたいま、いつなにが起こってもおかしくないですよね。 そんなとき、大事なデータが失われないよう、 日頃からバックアップをとっておく必要があると思います。

さて、今回は、そんな中から、リモートバックアップに注目してみようと思います。 リモートバックアップをいますぐ実践するために、どんな手段を選べばいいのか、 どういう手順で行えばいいのか…的なことを、以下を起点にして、 考えてみたいと思います。

  • たいていのディストリビューションにある、一般的なツールでまかなう
  • できるだけ簡単な手順で行う
  • 自動化できるようにする
  • セキュリティのことも、少しは頭の片隅に置いておく

まず、リモートバックアップの種類ですが、個人的には、 以下に分かれるのではないかと思っています。

  1. ローカルでバックアップするツール + リモートにコピーするツール
  2. リモートバックアップのために作られたツール
  3. リモートバックアップの機能を持つツール

 

1. の、ローカルでバックアップするツールといいますと、 古くからある dump/restore コマンドですとか、 アーカイブファイルを扱う tar や zip などのコマンドが挙げられると思います。

そして、リモートにコピーといえば、ftp や ssh などのコマンドです。 ただし、ftp の場合、ユーザ名とパスワードが生でネットワーク上に流れますので、 インターネットを経由させないほうがよいように思います。

あるいは、コピー先のマシンのディレクトリを NFS でマウントする、 という方法も考えられます。ただ、バックアップのためだけに NFS を使うのは、 あまりお気軽ではないように思います。

 

さて、以下では、tar(+bzip2) と ssh を使用した例を示します。

まず、tar を用いて、/usr/local/apache2 以下のアーカイブファイルを作成するには、 以下のように実行します。

  $ tar cfj /var/backup/apache2-`date +%Y%m%d%H`.tar.bz2 \
  -C /usr/local/apache2 .

上記の場合、/var/backup に、 apache2-年月日時.tar.bz2 という名前のアーカイブファイルを作成しています。

そして、これを、 backupserver というマシンの /var/backup/client1 の下にコピーするには、 以下のように scp コマンドを実行します。

  $ scp -p /var/backup/apache2-2009030100.tar.bz2 \
  backupserver:/var/backup/client1/

 

…といったあたりは、実は過去に取り上げています。
たとえば、dump/restore の使いかたは、以下にあります。

Vol.122 - 正統派なバックアップを行う
http://www.usupi.org/sysad/122.html
Vol.123 - 正統派なバックアップを行う / 二つの塔
http://www.usupi.org/sysad/123.html
Vol.124 - 正統派なバックアップを行う / 王の生還
http://www.usupi.org/sysad/124.html

tar に関しましては、なんと、しょっぱなに取り上げていました。
(他の回でも、スポット的に取り上げています。あ、ssh もですね。)

Vol.001 - 簡易バックアップ
http://www.usupi.org/sysad/001.html

また、NFS に関しましては、以下でご紹介しております。

Vol.050 - NFSでファイル共有する
http://www.usupi.org/sysad/050.html
Vol.051 - autofsで使うときだけマウントする
http://www.usupi.org/sysad/051.html


次に、2. の、リモートバックアップのためのツールといいますと、 まず挙げられるのが rsync コマンドではないかと思います。

あるいは、 scp コマンドを -r オプションつきで(再帰的に)コピーさせる方法も考えられます。

また、先ほど名前だけ挙げました、dump/restore も、 リモートのマシンにアーカイブファイルを作成できます。ただし、 rexec を利用するため、rexec が使える環境でないといけません。

 

たとえば、rsync を使って、/usr/local/apache2 以下を、 backupserver の /var/backup1/client1/ 以下へまるっとコピーするには、 以下のように実行します。

  $ rsync -az -e ssh --delete /usr/local/apache2 \
  backupserver:/var/backup/client1/

 

はい、rsync も、過去に取り上げております。

Vol.009 - 別のマシン上にあるディレクトリと同期をとる
http://localhost/sysad/009.html


そして、3. の、主な目的は違うけれど、 リモートバックアップの機能を有するツールといいますと、 バージョン管理のツールが挙げられるように思います。

たとえば、Subversion や Git, Mercurial などは、 複数のマシンに分散してバージョン管理が行えますので、 リモートバックアップの機能があるといっても過言ではないと思います。

個人的には、 Mercurial を使って、あちこちにクローンを作成することで、 もしものときに備えています。
(インポートしてから別の場所でチェックアウトして… という面倒な手順を必要としないのがよいです。)

ちなみに、Mercurial は、以下でご紹介しております。

Vol.135 - Mercurial で設定ファイルを管理する
http://localhost/sysad/135.html
Vol.136 - パスワードを自動生成する (の宿題でクローンを作ってます)
http://localhost/sysad/136.html

また、RCS や CVS は、 ローカルで行う一種のバックアップツールとして使えると思います。

Vol.061 - 設定ファイルをリビジョン管理する
http://localhost/sysad/061.html
Vol.062 - 設定ファイルをもっとリビジョン管理する
http://localhost/sysad/062.html
Vol.063 - 設定ファイルをまとめてリビジョン管理する
http://localhost/sysad/063.html


バックアップする対象、使用するツール、頻度と保存期間などを大まかに決めたら、 いよいよ運用していくわけですが、もちろん、 毎回自分で実行するわけにはいきませんので、自動的にやってもらう必要があります。

はい、そうですね、自動化といえば、cron です。
crond デーモンさんが、指定した時刻になると、 指定したコマンドを実行してくださいます。

そして、時刻やコマンドを設定するには、crontab コマンドを使います。
たとえば、毎日朝5時に、/usr/local/sbin/backup.sh を実行するには、 以下のように crontab を実行します。

  $ crontab << E-O-F
  > 0 5 * * * /usr/local/sbin/backup.sh > /dev/null 2>&1
  > E-O-F

 

cron につきましては、以下でご紹介しております。

Vol.002 - 簡易バックアップ リローデッド
http://www.usupi.org/sysad/002.html

 

ただ、cron で自動化できても、ssh 実行の際にパスフレーズを聞かれてしまいますと、 自動的でなくなってしまいます。
ですので、パスフレーズを入力しなくても ssh でやりとりできるよう、 設定しておく必要があります。

具体的な設定方法につきましては、以下の本題の後半をご覧ください。

Vol.009 - 別のマシン上にあるディレクトリと同期をとる
http://localhost/sysad/009.html

 

そして、バックアップをアーカイブファイルなどの形式で保存していますと、 いくらストレージがふんだんにあると言っても、古いファイルを削除しないと、 いつか足りなくなる日がきてしまいます。

そんなときには、find コマンドを使いましょう。
find コマンドは、指定したディレクトリ以下の、 指定した条件に合ったファイルに対して、処理を行わせるためのものです。
たとえば、 作成して(最後に変更して)から28日経過したファイルを無条件に削除するには、 以下のように実行します。

  $ find /var/backup -mtime +28 -a -type f -exec rm -f {} \;

 

はい、find も既出です。詳しくは、以下をご覧くださいませ。

Vol.003 - 簡易バックアップ レボリューションズ
http://www.usupi.org/sysad/003.html


以上、リモートバックアップについて、少し考えてみました。

なるべく環境などに依存しない、古典的な方法だけを取り上げました。
ですので、お世辞にも網羅しているとは言いがたいですが、 根本的にダメというほどでもない内容だとは思います。(思いたいです)

…まあ、そんな言い訳はどうでもよく、バックアップは大事ですよね。
個人的には、メディアに保存するよりも、各所にクローンを保存しておく方が、 もしものときに安心だと思っていますので、 リモートバックアップに内容をしぼってみた次第です。
(と書くと、ハリーポッターに出てくる、例のあの人みたいですが。)

万が一、バックアップを取ってないという貴兄がいらっしゃいましたら、 リモートに限らず、ご使用の環境にあったバックアップ方法を検討して、 まず運用してみるのが、よろしいように思われます。

宿題の答え

前回の宿題は、

  指定したディレクトリ以下にいるプロセスをすべて見つけましょう。

でした。

fuser コマンド自体は、 オプションなしではディレクトリだけしか対象としてくれませんし、 -m オプションではファイルシステム単位と大雑把にしか調べてくれません。 総当たりでやっていくしかなさそうです。

というわけで、総当たりといえば find コマンド、これを使いましょう。 たとえば、/export/work 以下にいるプロセスをすべて列挙したい場合、 以下のように実行すればよいと思います。

  # find /export/work -type d -exec fuser {} \;
  /export/work/test:    7748c
  ...

さらにたとえば、-v オプションをつけて詳しく、とおっしゃる貴兄は、 先ほどの実行例に -v をつけるだけで済みます。

  # find /export/work -type d -exec fuser -v {} \;

                       USER        PID ACCESS COMMAND
  /export/work/test:   usu        7748 ..c..  bash
  ...

今回の宿題

今回の宿題は、

  各アーカイブファイルのサイズや処理時間などを調べてみましょう。

です。

tar+gzip や tar+bzip2, zip など、様々な種類がありますが、 それぞれ特色があるように思いますので、さらっと調べてみたいと思います。

…じゃなくて、調べてみてください、でした。
よろしくお願いします。

あとがき

「EDN Japan」という、電子産業系の雑誌を、無償で購読しています。
この雑誌が、電子媒体を選択できるようになりました。

EDN Japan
http://www.ednjapan.com/

電子媒体ならではの検索もできます。オフラインで読むこともできます。 印刷もできます。やっぱり紙媒体がいいなと思ったら、 読みたい記事だけ印刷すればいい、という寸法です。

毎月送られてくる雑誌の保管期間や場所に悩んでいましたので、 こりゃあいいと思い、電子媒体に切替えることにしました。

また、結婚当初からお世話になっているセゾンカードも、利用明細の郵送を止めて、 WWW 上で利用できる選択肢が新たに増えました。
しかも、Excel などに取り込める形式で保存もできるようです。 電子的な処理がしやすくなりますね。(していませんが)

セゾンカード
http://www.saisoncard.co.jp/

そんなわけで、ようやく、紙の使用量が減って、 電子化が進んできたなあという実感を、いまさらですが感じています。

しかし、電子化がどんどん進んでいくと心配なのが、データの保管です。
住所録も家計簿もなんでもかんでも、1箇所に保管しておくと、 万が一のときに全部失われてしまった…なんてことにもなりかねません。

当り前ですが、バックアップは大事なんだなぁということにも、 いまさらながらに感じている次第です。(お、本題とつながりましたね!)

 

…さて、冒頭でもふれましたが、ただいま切羽詰まっております。
年初に、月2回発行を(極力)目指します! …と宣言しましたが、 さすがにそうも言っていられなくなってしまいました。

というわけで、すみませんが、次回の発行は見合わせていただきます。
みなさんも、年度末でお忙しいと思われますので、ちょうどよいかなと… す、すみません…。
(でも、きっと、納期が年度末だという貴兄は、いらっしゃいますよね。 お互い、がんばって乗り切りましょう!)

 

今回も、ここまで読んでいただき、ありがとうございました。
次回は、4月5日(日) 頃に(ごめんなさい)、お会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」−不思議とコンスタントに引合いがあります。感謝感謝です。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://usupi.org/k/ (モバイル栗日記)


[バックナンバーのトップへ] [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

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本