DAT装置への自動バックアップを行なうシェルを作成しているのですが、テープへの退避部分がわかりません。

シェルのかき方、バックアップの取り方に詳しい方、教えて下さい。
ちなみに、サーバはRedHat5.3です

<概要>
・毎週、月曜日の朝8時にテープの交換を行なう。
・毎日の深夜1時にバックアップを取得する(cronでシェルを実行)
・バックアップをテープに退避する(サーバ上にもとデータは残ったままでよい)

cronで実行するシェルの中にテープへの退避についてコマンドを追加したいのですがいまいち
書き方がわかりません。

※※コメント部分にポイントと作成中のシェルを記載します※※

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2010/03/04 18:02:14
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:JULY No.1

回答回数966ベストアンサー獲得回数247

ポイント60pt

Manpage of DATE

曜日の判定は下記のようになります。

# 火曜日
if [ `date '+%w'` = 2 ]; then
    mt -f /dev/nst0 setblk 0
fi

# 月曜日
if [ `date '+%w'` = 1 ]; then
    mt -f /dev/nst0 rewind
    mt -f /dev/nst0 offline
fi

テープに追記でバックアップをする方法ですが、基本的にはデバイスファイル名が「n」で始まるものは、書き込み完了時にリワインドしないものなので、

tar cf /dev/nst0 <バックアップ対象>

で良いと思います...

...が、バックアップの世界は奥深いです。

一応、tar でテープデバイスに書き出す、というのが一番単純ではありますが、他にも dump コマンドや cpio を使ったり、最近だと商用バックアップソフトのような、いろんな機能を持っているパッケージもあるので、「とりあえず tar」という程度に考えておいて下さい。

id:Ryo0524

条件判断のやり方について教えていただいてありがとうございます。

質問なのですが、巻き戻し(rewind)さえしなければテープに追記されていくのですよね??

2010/03/04 16:53:35
  • id:Ryo0524
    <ポイント>
    1.毎回の退避時に以下のコマンドの実行結果をログに出力する
     # mt -f /dev/nst0 status

    2.月曜日(つまり火曜日の朝1時)、テープを入れ替えてはじめてのバックアップ時にはテープ装置
     のブロックサイズを可変長に変更するコマンドを入力する
     # mt -f /dev/nst0 setblk 0

    3.1本のテープに1週間分のデータを入れる
     (前の日のデータにどんどん追加でいれていく)

    4.日曜日(つまり月曜日の朝1時)のバックアップ終了後にテープの巻き戻しとテープの取り出しコマンド
     を実行する。
     # mt -f /dev/nst0 rewind
     # mt -f /dev/nst0 offline

    =======================================================================================
    #!/bin/sh

    # バックアップIDを日付から決める(YYYYMMDDhhmm)
    FILENAME=`date +%Y%m%d`

    # バックアップ実行
    mkdir /backup/${FILENAME} >> /backup/${FILENAME}.log 2>&1
    tar cvfz ${FILENAME}.tar.gz /home/data >> /backup/${FILENAME}.log 2>&1
    mv ${FILENAME}.tar.gz /backup/${FILENAME} >> /backup/${FILENAME}.log 2>&1

    # ログをバックアップディレクトリに移動
    mv /backup/${FILENAME}.log /backup/${FILENAME}/

    #ここからが問題
    #テープへの退避を行なう
    #/backupの下にバックアップを行なった日付のディレクトリができているので
    #そのディレクトリをテープに書き込む

    #※ポイント1
    mt -f /dev/nst0 status >> /backup/${FILENAME}.log 2>&1

    #※ポイント2
    # 条件の付け方がわかりません・・・。。

    #※ポイント3
    #フォルダをテープに書き込むときのコマンドの書き方がわかりません…。。

    #※ポイント4
    # 条件の付け方がわかりません…。。

    exit 0
    ==============================================================================
  • id:dev_zer0
    > 質問なのですが、巻き戻し(rewind)さえしなければテープに追記されていくのですよね??
    yes
    でも、この調子だとバックアップテープからの復元手順とか大丈夫?
  • id:Ryo0524
    復元は私はしないので・・・。
    一応サーバ上にも3世代分まではのこすようにするのでサーバ自体がだめにならない限りテープから復元することはないです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません