본문 바로가기
서버,보안

리눅스에서 데이타별 자동 백업하기

by 세이박스 2009. 6. 9.
반응형
#!/bin/sh

server_name="db_server"
mysql_bin="/usr/local/mysql/bin"
mysqldb_root="/usr/local/mysql/data" #데이타베이스 위치
backupdb_root="/root/mysqldb_backup" #데이타 베이스 백업 공간
dir_name="$(date +%y%m%d%H%M)"

if [ ! -d $mysqldb_root ] ; then
echo "데이타베이스 위치를 입력해 주세요"
fi

if [ ! -d $backupdb_root ] ; then
echo "데이타 베이스 백업 공간을 만듭니다"
echo "mkdir -p $backupdb_root "
mkdir -p $backupdb_root
fi

if [ -d "$backupdb_root/$server_name.$dir_name" ]; then
echo "디렉토리가 존재합니다"
rm -rf "$backupdb_root/$server_name.$dir_name"
exit
else
echo "디렉토리를 생성합니다"
mkdir "$backupdb_root/$server_name.$dir_name"
fi

for db_name in $(ls $mysqldb_root)
do

if [ -d "$mysqldb_root/$db_name" ] ; then
echo "$db_name DB를 백업 중입니다"
$mysql_bin/mysqldump $db_name >> $backupdb_root/$server_name.$dir_name/$db_name.sql
fi

done
cd $backupdb_root
echo "백업된 DB를 압축합니다"

tar -cvzf "$server_name.$dir_name.tar.gz" "$server_name.$dir_name"

if [ -d "$backupdb_root/$server_name.$dir_name" ]; then
rm -rf "$backupdb_root/$server_name.$dir_name"
fi

let "i = 0"
for dname in $(ls -t $backupdb_root)
do
let " i = i + 1"

if [ $i -ge "11" ]; then
if [ -f "$backupdb_root/$dname" ]; then
rm -f $backupdb_root/$dname
fi
fi
done
반응형