본문 바로가기

IT tech/Linux

스크립트를 이용한 파일 백업

반응형
SMALL

스크립트를 이용하여 백업을 실시할 수 있다.

 

간단하지만 몇가지 백업 스크립트 예시를 아래에 기재해보겠다.

 

*참고로 모든 스크립트 파일의 권한은 755로 지정했다.

 

ex)

1. 서버 내 /home 경로에 있는 계정들에 대한 디렉토리를 압축 백업 하여 저장하고자 한다.

 

crontab에 등록할 스크립트 파일에 다음과 같이 저장

#!/bin/sh

home_root="home 경로"
backup_home_root="백업파일이 쌓일 경로"
sysdtime=$(date +%Y%m%d)

# 파일 삭제
find "$backup_home_root" -mtime +7 -exec rm -rf {} \;

cd "$home_root"
echo "백업을 시작합니다."

for home_name in $(ls)
do
    if [ -d "$home_root/$home_name" ] ; then
        echo "tar -czpf $backup_home_root$home_name-$sysdtime.tar.gz --exclude=centos $home_name"
        tar -czpf "$backup_home_root$home_name-$sysdtime.tar.gz"  --exclude="centos" "$home_root/$home_name"
    fi
done

echo "백업이 완료되었습니다."

 

해당 스크립트는 7일 이상 지난 백업파일을 삭제하고, centos 계정을 제외한 나머지 /home 계정들에 대한 백업파일을 날짜별로 저장한다.

 

 

 

2. DB내 sql을 덤프 후, 해당 덤프파일을 압축 백업하여 저장하고자 한다. (=DB 서버)

 

crontab에 등록할 스크립트 파일에 다음과 같이 저장

#!/bin/bash

# 필수 변수 지정

backup_dir="백업파일이 쌓일 경로"

db_user="DB계정명"
db_pass="DB패스워드"

date=`date +%Y%m%d`
mysqlshow="/usr/local/mysql/bin/mysqlshow"
mysqldump="/usr/local/mysql/bin/mysqldump"

# 지난 백업 삭제
/usr/bin/find $backup_dir -mtime +7 -exec rm -rf {} \;


# 백업 디렉터리 생성
#/bin/mkdir -p $backup_dir/$date
/bin/mkdir -p $backup_dir


# 덤프 시작~
for database in `$mysqlshow -u${db_user} -p${db_pass} | awk -F" " '{print $2}' | /bin/grep -v "^$" | /bin/egrep -v "Databases|information_schema|performance_schema|^\+"`
do
    $mysqldump -uroot -p${db_pass} --single-transaction $database > $backup_dir/${database}-${date}.sql
#    /bin/gzip -f9 $backup_dir/${database}-${date}.tar.gz $backup_dir/${database}-${date}.sql
done

 

해당 스크립트는 7일 이상 지난 백업파일은 자동삭제 되도록 작성되었다.

덤프뜰때 information_schema, performance_schema 데이터베이스는 덤프대상에서 제외되었다.

 

 

 

3. 다수의 특정 디렉토리를 지정 후 압축 백업하여 저장하고자 한다.

#!/bin/sh

find '백업이 쌓일 경로' -ctime +3 -exec rm -rf {} \;

system_backup_root="백업이 쌓일 경로"
sysdtime=`date +%Y%m%d`
mkdir -p $system_backup_root/$sysdtime

tar -pczf "$system_backup_root/$sysdtime/etc-$sysdtime.tar.gz" /etc
tar -pczf "$system_backup_root/$sysdtime/var-$sysdtime.tar.gz" /var
tar -pczf "$system_backup_root/$sysdtime/usr-$sysdtime.tar.gz" /usr/local

exit 0


 

/usr/local, /etc, /var 디렉토리를 날짜별로 백업한다. 그리고 3일 이상 지난 백업파일은 자동삭제 되도록 작성되었다.

 

반응형
LIST