*세팅값 작성을 생활화 하자
Version : CentOS 7 1503
Kernel : 3.10.0-229.el7.x86_64
설치환경 : Text 모드
*장비 : Sun x4170 Enterprise Model
스크립트 동작 테스트 해본 리눅스 OS
CentOS 6.9 , 7.0, 7.1
vsftpd설치가 되어있다는 전제하에 진행하셔야합니다.
주석이 처리된 부분은 제외하고 사용하셔도 됩니다.
*추가적으로 업데이트 및 수정 사항이 생길때마다 수정할 예정
*추가 여러분들의 댓글 의견도 바로 반영하겠습니다.
[수정사항] |
개인 유저별 백업 폴더 생성 확인(현재 테스트 스크립트는 적용안함) 백업 시간 30분 단위로 수정 -> 백업 파일 생성시 '년원일'_'시분'_'계정명'_'압축명' 로그인된 유저만 백업파일이 생성되도록 변경 -> 'root'계정 제외 |
#!/bin/bash
# FTP 현 서버에서 데이터 FTP 전송
TODAY=`date +%Y%m%d_%H%M` #시간 출력
#DELETE_DATE=`date -d "-5 days" +%Y%m%d` #파일 보존 기간(현재 사용안함)
#YOIL=`date +%a` #요일 출력(현재 사용안함)
#USER List Info
CON_USERS=`who | awk '{print $1}' | sort -u | sed 's/root//g'` #현재 접속중인 유저만 백업을 하기 위해 접속 유저 출력(root제외)
#ftp set
LOCAL_BACKUP_DIR="/backup" #로컬에서 백업파일이 저장될 위치
LOCAL_TGZ_FILE="backupser.tar.gz" #로컬에서 백업파일 이름
LOCAL_TGZ_DIR="/home" #로컬에서 백업파일로 만들 위치
#/backup Directory have check.
if [ ! -d ${LOCAL_BACKUP_DIR} ]; #/backup 디렉터리가 있는지 확인 없으면 생성
then
mkdir ${LOCAL_BACKUP_DIR}
fi
#Each Users File Create. #만약 백업 폴더를 유저별로 생성시 사용할 스크립트(현재사용안함)
#for user_list in ${CON_USERS}
#do
# if [ ! -d ${LOCAL_BACKUP_DIR}/${user_list} ];
# then
# LOCAL_BACKUP_USER_DIR=`mkdir ${LOCAL_BACKUP_DIR}/${user_list}`
# echo ${LOCAL_BACKUP_USER_DIR}
# fi
#done
#File Count Check .
#FILE_CHECK_LIST=`ls ${LOCAL_BACKUP_DIR} | wc -l`
#WHO_CHECK_LIST=`who | awk '{print $1}' | sort -u | wc -l`
#
#
#if [ ${FILE_CHECK_LIST} -eq `expr ${WHO_CHECK_LIST} - 1` ];
#then
# echo "Backup File Count Check Complete"
# echo `ls ${LOCAL_BACKUP_DIR}`
#fi
#Compressing TAR
for user_list in ${CON_USERS} #현재 접속중인 유저만 백업파일 생성 시작
do
TGZ_EX_CH=`tar -zcf ${LOCAL_BACKUP_DIR}/${TODAY}_${user_list}_${LOCAL_TGZ_FILE} ${LOCAL_TGZ_DIR}/${user_list} | echo $?`
if [ ${TGZ_EX_CH} -eq 0 ];
then
echo "Compressing Complete"
elif [ ${TGZ_EX_CH} -ne 0 ];
then
echo "Compressing Fail."
fi
done
#SERVIER Info vsftp
USERNAME="ftpuser"
PASSWORD="uangel!098"
HOST="192.168.3.246"
FTP_BACKUP_DIR="/home/ftpuser/"
TGZ_FILE_NAME=${TODAY}_${user_list}_${LOCAL_TGZ_FILE} #만들어진 파일들을 FTP서버로 전송
{
echo user "$USERNAME $PASSWORD"
echo cd "${FTP_BACKUP_DIR}"
echo lcd "${LOCAL_BACKUP_DIR}"
echo put "${TGZ_FILE_NAME}"
echo by
} | ftp -n -v $HOST > /backup/log/${TODAY}_log #로컬에서는 FTP 동작 결과에대한 정보 로그로 저장