バックアップデータは過去5日間保存してその前のデータは削除します。
ホームディレクトリの中でバックアップが必要なところだけバックアップを残します。
DBも必要なDBのみバックアップします。
シェル作成後、Cronに登録して毎日4時自動でバックアップが行われるようにします。
cron確認:crontab -l
cron編集:crontab -e
・バックアップするディレクトリリスト
[root@localhost backup]# vi bk_dir.name
wiki
sns
manual
blog
・バックアップするDBリスト
[root@localhost backup]# vi bk_db.name
information_schema
mysql
wiki
sns
manual
blog
・バックアップ用のシェル「backup.sh」
#!/bin/sh
#日付
today=`date +%Y%m%d`
oldday=`date --d "5day ago" +%Y%m%d`
#パス
target_dir="/home/lucen/backup"
db_dump="/usr/bin/mysqldump"
mysql="/usr/bin/mysql"
#バックアップ用のディレクトリ作成
function mk_dir(){
if [ ! -e $target_dir/$today ]
then
mkdir -p $target_dir/$today
fi
}
#ソースバックアップ
function home_backup(){
while read dir_name;
do
tar Pcfz $target_dir/$today/${dir_name}.tar.gz /home/$dir_name;
done < $target_dir/bk_dir.name
}
#DBバックアップ
function db_backup(){
while read db_name;
do
$db_dump -u root $db_name > $target_dir/$today/${db_name}.sql
done < $target_dir/bk_db.name
}
#5日前のバックアップ削除
function rm_dir(){
if [ -e $target_dir/$oldday ]
then
rm -rf $target_dir/$oldday
fi
}
mk_dir
home_backup
db_backup
rm_dir
exit 0
・作成したファイルが実行できるようにします。
#変更前
[root@localhost backup]# ll
-rw-r--r-- 1 root root 669 7月 31 20:56 backup.sh
#実行可能に変更
[root@localhost backup]# chmod u+x backup.sh
#変更後
[root@localhost backup]# ll
-rwxr--r-- 1 root root 669 7月 31 20:56 backup.sh
・cron登録
[root@localhost backup]# crontab -e
0 4 * * * /home/lucen/backup/backup.sh
・cron確認
[root@localhost backup]# crontab -l
0 4 * * * /home/lucen/backup/backup.sh