システムバックアップスクリプト

Linuxサーバーのシステムバックアップスクリプトを書いてみた
bashは触り始めで冗長なコーディングしてると思うんだけど、一応目的は果たせたので。

#!/bin/bash

backup_dir_etc="/etc"
backup_dir_home="/home/hoge"

work_dir="/tmp/backup"

#別ホストのHDD
to="/mnt/share/LinuxBackup"

#既存のバックアップファイルがあれば削除
dates=`date +%Y%m%d`
if [ -r ${work_dir}/backup_`date --date ' 1 days ago ' +%Y%m%d`.tar.gz ] ;then
    rm ${work_dir}/backup_`date --date ' 1 days ago ' +%Y%m%d`.tar.gz &>/dev/null
    [ $? -eq 0 ] && echo "昨日のファイルを削除しました" || echo "削除できませんでした";
fi

#etcのバックアップ
cd ${backup_dir_etc}
tar czf ${work_dir}/tmp/backup_etc.tar.gz ./ &>/dev/null
if [ $? -eq 1 ] ;then
    echo "/etc バックアップ作成に失敗"
    exit
fi

#homeのバックアップ
cd ${backup_dir_home}
tar czf ${work_dir}/tmp/backup_home.tar.gz ./ &>/dev/null
if [ $? -eq 1 ] ;then
    echo "home バックアップ作成に失敗"
    exit
fi

#まとめる
cd ${work_dir}
tar czf ${work_dir}/backup_${dates}.tar.gz ./tmp &>/dev/null
if [ $? -eq 1 ] ;then
    echo "バックアップパッケージ作成に失敗"
    exit
fi

#転送
scp ${work_dir}/backup_${dates}.tar.gz ${to}

こいつをcronで三日に一度でも実行してやればひとまずデータロストする事はなさそう。

ちなみに/etcの中身はroot権限がないと触れないファイルが沢山あるので
このスクリプトの所有者をrootに変更して、アクセス権限を700にして実行するのが良い。