Last Update 2005.04.17 

  •  Fedora Core 3による自宅サーバー構築(CUIベース)
    •  ソフトウエア編(運用)
      •  バックアップの定時起動
        •  定期的に実行しましょう。 -2005年04月17日
          環境構築もすすむと設定や各種情報資源をバックアップして置かないと、クラッ
          シュした時に非常に物理的金銭的問題以上に悲しい事になります。
          定期的にバックアップして知的財産を保護しましょう。
          例では、
          @「/root」「/home」「/etc」を
           ※TARGET="/root /home /etc"
          A「/home/smbshare/backup」に
           ※BakDIR=/home/smbshare/backup
          B「backup.tar.gz」って名前で圧縮して保存する。
           ※BakFILE=backup.tar.gz
          C但し、以下のフォルダはバックアップの対象としない。
           「/home/smbshare/backup」 バックアップ吐き出しフォルダだから
           「/home/smbshare/wizd」 動画が大き過ぎ
           「/home/*/webfiles」 各個人のPCにある
           ※sh/backup.excludeファイルで指定
          としています。

          バックアップ対象から除外するものが無ければ「sh/backup.exclude」は書かなく
          ても良いです。 勝手にスクリプトが空枠を作ります。
          バックアップ時にエラーが発生したらログの最後の1行だけをメールします。
          なお、エラー時にはバックアップ途中の「backup.tar.gz.new」は消します。
          これはエラーメールをデリバリーするディレクトリが存在するディスクと、バック
          アップを吐き出すディスクが同じ時に、ディスクのパンクが発生するとメールがデ
          リバリー出来ない事を考慮して、このような仕様としています。
          また、バックアップが正常終了するまで、前回のバックアップは保持する仕様とし
          ています。
          [root@station ~]# vi sh/backup.sh
          
          #!/bin/sh
          
          # バックアップ対象ディレクトリ
          TARGET="/root /home /etc"
          #バックアップ除外ディレクトリ(ファイル)設定ファイル
          EXCLUDE="/root/sh/backup.exclude"
          # バックアップファイル名・ディレクトリ名
          BakFILE=backup.tar.gz
          BakDIR=/home/smbshare/backup
          # ログファイル名
          LOG=/var/log/backup.log
          
          mkdir -p $BakDIR 2>&1
          if [ ! "(" -e $EXCLUDE ")" ] ; then touch $EXCLUDE ; fi
          if [ -e $BakDIR/$BakFILE.new ] ; then rm -f $BakDIR/$BakFILE.new ; fi
          
          date > $LOG  2>&1
          echo >> $LOG
          
          tar czvfP $BakDIR/$BakFILE.new -X $EXCLUDE $TARGET >> $LOG 2>&1
          if [ $? -eq 0 ] ; then
                  if [ -e $BakDIR/$BakFILE ] ; then rm -f $BakDIR/$BakFILE ; fi
                  mv $BakDIR/$BakFILE.new $BakDIR/$BakFILE > /dev/null 2>&1
          else
                  if [ -e $BakDIR/$BakFILE.new ] ; then rm -f $BakDIR/$BakFILE.new ; fi
                  tail -1 $LOG
          fi
          
          echo >> $LOG
          date >> $LOG
          chmod 600 $LOG
          
          [root@station ~]# vi sh/backup.exclude
          
          /home/smbshare/backup
          /home/smbshare/wizd
          /home/*/webfiles
          

          実行の権限を付けて、自動実行「cron」に5時40分に実行するよう登録してあ
          げます。 好きな時間で良いです(笑)
          [root@station ~]# chmod 700 /root/sh/backup.sh
          [root@station ~]# crontab -e
          40 05 * * * /root/sh/backup.sh | nkf -j
          

          例では「samba」の共有フォルダをバックアップの吐き出し先としていますので、
          ネットワークドライブ経由で定期的に自分のPCに移動して下さい。
          移動しないとディスククラッシュ時にバックアップも一緒に死にます(笑)
          定期的にバックアップが面倒な時は物理的に別なディスクをサーバーに付けて、
          そこを吐き出し先にしたり自分のPC側にコピーのバッチを自動起動にするなど
          仕込みが必要でしょう。

          ユーザーが「samba」の共有フォルダでデータを移動又は削除(コピーはOK)する
          時は、「/home/smbshare/backup」のフォルダに所有権と「770」の権限を付けて
          下さい。
          [root@station ~]# chown user1:smbshare /home/smbshare/backup
          [root@station ~]# chmod 770 /home/smbshare/backup