일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 티스토리
- 킹북이초월
- 스톤에이지
- 보르비스초월
- 소비전력
- 아파치
- 시놀로지
- SKT
- ConoHa
- 자바스크립트
- centos
- Apache
- 리눅스
- jQuery
- PHP-FPM
- KB증권
- html/css
- 알리익스프레스
- 알뜰폰
- php
- proxmox
- 윈도우10
- iptime
- mysql
- 램가스초월
- 복현오거리
- Rocky
- KB국민카드
- 가상서버호스팅
- nginx
- Today
- Total
맛집 여행 캠핑 일상 생활
리눅스 사용자 DB & Data 자동 백업 본문
유저 DB 및 Data를 자동으로 백업시켜주는 쉘스크립트이다.
7일간 데이터를 보관하고 7일전 데이터는 삭제를 해준다.
mysqldump 에 옵션을 자신에게 맞도록 수정해 주면 된다.
--lock-tables=false 로 된걸 true로 해줘도 되긴 하지만 테이블에 데이터가 많은 경우 락이 걸려서 백업될 동안은 대기상태로 있어야 한다.
#!/bin/bash
DB_ROOT_ID="root"
DB_ROOT_PW="비밀번호"
TODAY=`date +%Y%m%d`
DELETE_DATE=`date +%Y%m%d --date='7 days ago'`
DAY_OF_WEEK=`date +%u`
HOME_DIR="/home"
BACKUP_DIR="/backup"
echo "
Start : "`date` >> /root/backup-users.log
for USER_NAME in $(ls $HOME_DIR)
do
if [ -d "$HOME_DIR/$USER_NAME" ] ; then
USER_BACKUP_DIR="${BACKUP_DIR}/${USER_NAME}"
if [ ! -d "$USER_BACKUP_DIR" ] ; then
mkdir -m 700 $USER_BACKUP_DIR
fi
if [ ! -d "$USER_BACKUP_DIR/$TODAY" ] ; then
mkdir -m 700 $USER_BACKUP_DIR/$TODAY
fi
USER_BACKUP_DIR="${BACKUP_DIR}/${USER_NAME}/${TODAY}"
DB_BACKUP_NAME="${USER_BACKUP_DIR}/${USER_NAME}.sql.gz"
mysqldump -u${DB_ROOT_ID} -p${DB_ROOT_PW} ${USER_NAME} --opt --lock-tables=false | gzip > ${DB_BACKUP_NAME}
chown ${USER_NAME}.${USER_NAME} $DB_BACKUP_NAME
sleep 10
USER_DIR="${HOME_DIR}/${USER_NAME}"
DATA_BACKUP_NAME="${USER_BACKUP_DIR}/${USER_NAME}_data.tgz"
cd ${USER_DIR}
tar czfp $DATA_BACKUP_NAME ./www
chown ${USER_NAME}.${USER_NAME} $DATA_BACKUP_NAME
cd
USER_BACKUP_DEL_DIR="${BACKUP_DIR}/${USER_NAME}/${DELETE_DATE}"
if [ -d "$USER_BACKUP_DEL_DIR" -a "$USER_BACKUP_DEL_DIR" != "" ] ; then
sleep 5
rm -rf ${USER_BACKUP_DEL_DIR}
fi
sleep 5
fi
done
echo "End User Backup : "`date` >> /root/backup-users.log
DB_ROOT_ID="root" MySQL 루트 아이디
DB_ROOT_PW="비밀번호"
HOME_DIR="/home" 유저 디렉토리 위치
BACKUP_DIR="/backup" 백업될 디렉토리 위치
위의 4가지 정보만 수정해주고 적당한 파일명으로 저장한 뒤에 퍼미션을 700으로 바꾸고 크론에 등록해 주자.
서버가 조용한 시간에 백업스크립트가 돌아가게끔 cron에 등록해주면 된다.
'LAMP' 카테고리의 다른 글
아파치 이미지파일 로그 안나오게 하기 (0) | 2016.03.02 |
---|---|
리눅스 반복 예약작업 cron crontab (0) | 2016.03.02 |
리눅스 트래픽 모니터링 쉘스크립트 (0) | 2016.02.26 |
리눅스 여러개의 파일에서 특정문자열 치환 (0) | 2016.02.25 |
PHPExcel 엑셀 다운로드 (0) | 2016.02.24 |