ncftp 를 이용한 백업 스크립트ncftp 를 이용한 백업 스크립트

Posted at 2010. 10. 5. 12:57 | Posted in Server
반응형

ncftp 를 이용한 백업 스크립트

ncftp를 이용한 백업 스크립트입니다. 
스크립트에 원격삭제도 추가하면 더좋겠죠?


# vi /root/backup.sh

#!/bin/bash

#### 공통설정 
export Today="`date '+%y-%m-%d'`" 
backup_dir="/home/file/backup" 
backup_day="1" # 보관일(1일)

#### 디비설정 
DB_user="root"; 
DB_pass="비밀번호";


#### 원격설정 
FTP_addr="접속아이피"; 
FTP_user="아이디"; 
FTP_pass="비밀번호";


########### 오래된 백업데이터 삭제 
dirlists=`/bin/ls -t $backup_dir 2>/dev/null` 
i=1 
for dir in $dirlists ; do 
  if [ "$i" -ge $backup_day ] ; then 
    /bin/rm -rf "$backup_dir/$dir" 
  fi 
  i=$(($i+1)) 
done

####### 새로운 디렉토리 생성 
if [ ! -d "${backup_dir}/${Today}" ] 
then 
/bin/mkdir -p ${backup_dir}/$Today 
/bin/mkdir -p ${backup_dir}/$Today/homedir 
/bin/mkdir -p ${backup_dir}/$Today/databass 
/bin/mkdir -p ${backup_dir}/$Today/system 
fi

####### databass를 사용자별로 백업을 한다. 
for database in `mysqlshow -u ${DB_user} -p${DB_pass} | awk -F" " '{ print $2 }' | grep -v "^$" |grep -v "Databases"` ; do 
  mysqldump -u ${DB_user} -p${DB_pass}  "${database}" ${table} > ${backup_dir}/${Today}/databass/${database}.sql 
done

####### 시스템 디렉토리를 백업한다 
tar cvfpz ${backup_dir}/$Today/system/usr.local.tar.gz /usr/local 
tar cvfpz ${backup_dir}/$Today/system/etc.tar.gz /etc 
tar cvfpz ${backup_dir}/$Today/system/var.named.tar.gz /var/named

####### home 디렉토리에 사용자별로 백업을 한다. 
dirlists=`/bin/ls -t /home 2>/dev/null` 
for dir in $dirlists ; do 
  tar cvfpz ${backup_dir}/$Today/homedir/$dir.tar.gz /home/$dir 
done

####### 링크를 만들어 준다. 
rm -rf ${backup_dir}/today 
ln -s ${backup_dir}/$Today /${backup_dir}/today

####### 원격 데이타백업을 시작한다. 
ncftp -u${FTP_user} -p${FTP_pass} ${FTP_addr} << ./backup 
put -R ${backup_dir}/$Today 
bye

 

* 파일 경로 주의하시고 이메일주소 변경해서 사용하세요.

 

# crontab -e

05 00 * * * '/usr/bin/rdate -s time.bora.net && /sbin/clock -w' 
00 04 * * * su - root -c '/root/backup.sh | mail -s "시스템 백업 결과보고" test@abc.com'

반응형

//