[linux] 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'
# 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'
관련링크
댓글목록
등록된 댓글이 없습니다.