2013년 12월 2일 월요일

[Linux] ftp 를 이용한 네트웍 백업 스크립트

#!/bin/sh

################# 개요 ##################
# 인자로 들어온 server1의 특정 db를 백업한다
# 인자가 생략되면 db1 이다.
# split로 분할 압축후 server2의 /home/myid/db_backup 에 ftp로 전송한다
# 파일명 : "db명"_"날짜"_"aa" , "ab" ...
######################################

############### 필요한 변수들 #############
# host : 백업될 서버
# username : ftp로 접속할 id
# password : 비번
# db_name : server1의 db명
# mysql_dir : mysql 데이터 디렉토리
# backup_dir : server1의 분할압축된 파일이 놓일 임시 디렉토리
# today_date : 오늘날짜 (파일명에 사용됨)
# size : 한 조각의 크기
#####################################
host="server2.test.com"
username="myid"
password="mypasswd"
db_name=${1:-db1}
mysql_dir="/home/mysql/data/"
backup_dir="/tmp/pieces/"
today_date=`date +%Y%m%d`
size="650m"

# 기존에 만들어진 파일들을 없앤다
# /tmp/pieces 로 이동후 원하는 db 디렉토리를 분할압축 한다.
# ftp로 server2 의 /home/foremost/db_backup 으로 옮긴다.

echo "[`date +%Y-%m-%d\ %T`] $db_name backup Start !!!"
if [ -d "$backup_dir" ]; then
rm -f ${backup_dir}*
fi

cd $backup_dir
tar cf - ${mysql_dir}${db_name} | bzip2 -c | split -b $size - ${db_name}_${today_date}_

{
echo user $username $password
echo cd /home/myid/db_backup
echo lcd /tmp/pieces
echo prompt
echo mput *
echo quit
} | ftp -n $host 21

echo "[`date +%Y-%m-%d\ %T`] $db_name backup End !!!"
exit 0


# 1G 용량의 db를 백업하는데 약 20여분이 소요되더군요.
# bzip2 대신 gzip을 사용하면 좀더 빨라지지 않을까 싶습니다.


자료출처: KLTP

댓글 없음:

댓글 쓰기