|
|
|
|
|

월간 인기 게시물

게시물 57건
   
백업스크립트 (SAMBA) rsync + mysqldump + mysql tar + home tar
글쓴이 : 최고관리자 날짜 : 2011-02-28 (월) 21:53 조회 : 12406
글주소 :
                          

SAMBA 마운트 디스크로 백업
 [root@chonnom root]# df -Th
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda1     ext3     71G  6.0G   61G   9% /
tmpfs        tmpfs    947M     0  947M   0% /dev/shm
//KB2.SMILESERV.COM/KB212308
              cifs    100G  1.5G   99G   2% /SMILESERV_100G_BACKUP
 
backup_info (백업할 데이타정보)
#!/bin/bash
today=`date +%Y-%m%d`;
sysdtime=`date +%Y-%m%d-%H%M`;
Mount_DIR=/SMILESERV_100G_BACKUP
 
# Rsync Clon Backup
rsync_src=/home
rsync_dst=$Mount_DIR/rsync

# MYSQL Backup
mysql_rootpasswd="root";
mysql_host="localhost"
mysql_backup_period=5;
reportmailto="";
mysql_data_src=/usr/local/mysql/var;
mysql_dst="$Mount_DIR/tar/mysql";
mysql_dump="/usr/local/mysql/bin/mysqldump";
mysql_show="/usr/local/mysql/bin/mysqlshow";

# Directory Backup
home_backup_period=30
full_backup_week="Sun|일"
home_src="/home"
home_dst="$Mount_DIR/tar/home"
home_dst_full="$Mount_DIR/tar/home/full";
home_dst_difference="$Mount_DIR/tar/home/difference";
 
 
config (SAMBA 마운트된곳의 접속정보)
 #!/bin/bash
username="mojily";
password="********";
backup_serverip="KB2.SMILESERV.COM";
 
 
home_tar.sh (홈백업 : 1주일에 1번 전체백업, 나머지 차등백업)
#!/bin/sh
source $(dirname $0)/config
source $(dirname $0)/backup_info
 
if [ ! -d $Mount_DIR ]; then
        mkdir -p $Mount_DIR;
fi
 
if [ ! -d "$home_dst_full" ]; then
        mkdir -p $home_dst_full;
fi;
 
if [ ! -d "$home_dst_difference/$today" ]; then
        mkdir -p $home_dst_difference/$today;
fi;
 
# 지난 데이타 삭제
find $home_dst_full -ctime +$home_backup_period \-exec rm -rf {} \;
find $home_dst_difference -ctime +$home_backup_period \-exec rm -rf {} \;
 
# 백업시작
cd $home_src;
 
for home_name in $(ls);
do
if [ $home_name = "lost+found" ]; then
continue;
fi;
 
if [ $home_name = "$(echo $Mount_DIR |cut -d"/" -f3)" ]; then
continue;
fi;
 
if [ -d "$home_src/$home_name" ] ; then
        full_backup_date=`echo $(date +%a) |egrep $full_backup_week`
        if [ ! -z $full_backup_date ]; then
        tar -pczf "$home_dst_full/$home_name-$sysdtime.tar.gz" "$home_name";
        else
        tar -N "`cat $home_dst/last`" -pczf "$home_dst_difference/$today/$home_name-$sysdtime.tar.gz" "$home_name";
        fi;
fi;
done;
date +"%Y-%m-%d %T" > $home_dst/last;
 
 
mysql_backup.sh (dump 백업 및 tar 압축백업)
#!/bin/bash
source $(dirname $0)/config
source $(dirname $0)/backup_info
 
if [ ! -d "$mysql_dst" ]; then
        mkdir -p $mysql_dst;
fi;

mysql_backupdir="${mysql_dst}/$today";
find $mysql_dst -ctime +$mysql_backup_period \-exec rm -rf {} \;
 
db_compress="0"
not_dump_db="test|test2"
mysql_connect="-h $mysql_host -u root -p$mysql_rootpasswd";
mysql_DBs=`$mysql_show $mysql_connect 2>/dev/null | egrep -v "(${not_dump_db}|Databases|\+)" | awk '{print $2}'`
mysql_dump_work() {
        mysql_each_DB="$1"
        mysql_dump_file="${mysql_backupdir}/${mysql_each_DB}-${sysdtime}.sql"
        $mysql_dump $mysql_connect $mysql_each_DB > $mysql_dump_file
        if [ "$db_compress" = "1" ] ; then
                gzip -f9 $mysql_dump_file
        fi
}
 
if [ "$mysql_DBs" != "" ] ; then
        if [ ! -d "$mysql_backupdir" ] ; then
                mkdir -p "$mysql_backupdir"
                chmod 700 "$mysql_backupdir"
        fi
        for mysql_DB in $mysql_DBs ; do
                mysql_dump_work $mysql_DB
        done
 
else
        ## MySQL이 가동중이지 않을 경우
        ## 주) 아래에서 ${IFS}=$IFS HTML에서 <BR>과 같음.
        ##
        if [ "$reportmailto" != "" ] ; then
                mailsubject="dailydump.cron report [${HOSTNAME}]"
                mailmessages="MySQL이 가동하지 않거나 DB가 없습니다.${IFS}
MySQL 서버(${mysql_host}) 확인하세요!!!"
                echo "$mailmessages" | mail -s "$mailsubject" "$reportmailto" >/dev/null 2>&1
        fi
fi
 
# 압축 백업
tar jcvfp "$mysql_backupdir/All_Database_${sysdtime}.tar.bz2" "$mysql_data_src";
 
 
rsync_backup.sh (동기화 백업)
 #!/bin/bash
source $(dirname $0)/config
source $(dirname $0)/backup_info

if [ ! -d $rsync_dst ] ; then
        mkdir -p $rsync_dst;
fi
rsync -tripD --exclude-from=$(dirname $0)/exclude_list --delete $rsync_src $rsync_dst
 
※ exclude_list (동기화할 폴더에서 제외할 패턴)
2011-0227
 

이름 패스워드
비밀글 (체크하면 글쓴이만 내용을 확인할 수 있습니다.)
왼쪽의 글자를 입력하세요.
   

 



 
사이트명 : 모지리네 | 대표 : 이경현 | 개인커뮤니티 : 랭키닷컴 운영체제(OS) | 경기도 성남시 분당구 | 전자우편 : mojily골뱅이chonnom.com Copyright ⓒ www.chonnom.com www.kyunghyun.net www.mojily.net. All rights reserved.