Server Backup 하기~🐣🐤🐥
백업의 필요성은 아무리 강조해도 지나치지 않습니다.
한번 파일을 날려보시면 뼈저리게 느끼실 거에요. 다들 몬지 알죠?
백업 시 고려할 점
언제 백업을 할 것인가?
- 언제? 얼마나 자주? 얼마나 오래 보관?
무엇을 백업할 것인가?
- 사용자 데이터 (홈디렉토리)
- DB 데이터 (시스템 DB , 사용자 DB)
- 시스템 설정 파일 (각 서버프로그램의 CONF 파일 등)
어디에 백업할 것인가?
- 내부 백업 (여유공간이 있는 디렉토리나 외장하드)
- 외부 백업 (자동전공/수동업로드)
어떻게 백업할 것인가?
- 압축 파일로 백업 : tar -czpf
- 비압축 저장 : cp-R, tar -cpf
- 증분 백업 :rsync
자 본격적으로 서버 내용을 백업하도록 해볼게요.
백업 절차 (root로 수행해야 합니다.)
- 백업 준비 : 백업용 디렉토리를 만들고, 권한 조정을 조정합니다.
mkdir /backup
chmod 700/backup
현재 경로는 /root 이어야 합니다.
- 백업 스크립트 작성
- 사용자 데이터 압축백업 : tar
- 사용자 DB 백업 : mysqldump
- 일주일 지난 백업파일 삭제 : find
vim backup.sh
1 #!/bin/bash
2 tar -czpf /backup/userdata_`date +%Y%m%d%H%M%S` . tgz /home 1>>/backup/log_`date +%Y%m%d` 2>>error_log_`date +%Y%m%d`
3 mysqldump -uroot -p1234 userdb |gzip > /backup/userdb_`date +%Y%m%d%H%M%S`.sql.gz
4 find /backup/ -type f -mtime +7 | sort | xargs rm -f
-백업 스크립트 테스트
ls -l
./backup.sh
ls -l /backup
ls -l /backup 을 통해, 백업 파일이 생성됨을 확인해야 합니다.
백업 스크립트 자동 실행 등록 --> cron
crontab -e
저는 vim 을 사용하니 choose 2 를 합니다.
에디터로 열린 파일 맨 밑으로 가셔서 어느시간에 자동으로 백업을 실행 할 것인지. 설정해 주어야 합니다.
위의 그림에 맞춰 원하는 시간에 백업 설정 시간을 맞추시고요.
저는 매일 오전 4시에 자동으로 백업하도록 설정 해보겠습니다.
0 4 * * * /root/backup.sh 1>/dev/null_2/dev/null
만약 오후 4시 즉 16시에 백업하기를 원하신다면, 아래와 같이 해주시면 됩니다.
0 16 * * * /root/backup.sh 1>dev>null 2>/dev/null