본문 바로가기

Script/Backup 관련

Backup - FTP서버로 백업파일 생성 및 전송 스크립트 (수정19.06.13)

*세팅값 작성을 생활화 하자

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 동작 결과에대한 정보 로그로 저장