먼저, 시스템을 백업하기 위한 가장 핵심적인 명령어는 tar 와 cron 이다.
우선 tar는 파일을 묶거나 압축을 하는 명령어로 기본적인 사용방법과 옵션은 아래와 같다.
- tar(Tape ARchive) -
1. tar 묶기
tar cf TAR파일명 원본1 원본2 ... : 나열된 원본들을 TAR파일명으로 묶기(생성)
v, vv : 묶기 과정을 (더)자세히 출력
-C 기준경로 : 기준경로 다음에 상대적경로의 파일명을 나열
z : gzip 으로 추가 압축
j : bzip2 로 추가 압축
J : xz 으로 추가 압축
2. tar 풀기
tar xf TAR파일명 : 현재 디렉토리에 TAR파일 풀기
tar tf TAR파일명 : TAR파일 풀기 테스트
v, vv : 풀기 과정을 (더)자세히 출력
-C 경로 : 지정된 경로 뒤에 TAR파일 풀기
3. tar 추가, 업데이트
tar uf TAR파일명 [수정된원본] : TAR파일의 내용과 비교하여
수정된 원본을 추가
tar rf TAR파일명 원본 : TAR파일에 새로운 원본을 추가
백업 같은 경우에는 시스템의 용량이 크면 클수록 시간을 많이 소요하며 정기적인 백업은 필수사항이므로 꾸준히 백업을 하여야한다. 일정시간, 일정주기로 시스템에서 자동으로 명령어를 실행해주는 예약작업을 하는 명령어가 있다.
예약작업을 하는 명령어는 at 과 cron 이있다.
- at -
at : 단 1번의 예약작업을 설정
at -l : 예약작업 목록
at -r <번호> : 예약작업<번호> 삭제
atrm <번호> : 예약작업<번호> 삭제
at now +5 min : 현재시간으로부터 5분후에 실행
+1 hour : 현재시간으로부터 1시간후에 실행
at 22:00 : 오후10(22시)에 실행
at 10:00 pm : 오후10(22시)에 실행
at 22:00 tomorrow : 내일 오후10(22시)에 실행
at 22:00 april 29 : 4월 29일 오후10(22시)에 실행
> 예약할 명령어 다음행에 [Ctrl] + [d] 눌러 마무리한다.
- cron -
cron : 주기(반복)적인 예약작업을 설정
crontab -e : 예약작업을 편집(등록,삭제)한다.
crontab -l : 예약작업 목록을 한다.
crontab -r : 예약작업을 제거한다.
crontab -e 명령어로 편집화면으로 들어가서 vi편집기를 사용
하는 것처럼 등록,수정,삭제를 진행한다.
*은 모든 시간,일,월,요일을 의미하고
분: * -> 0-59
월: * -> 1-12
분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-7) 예약작업
ex) 0 4 * * * ping
-> 요일(무관), 월(무관), 일(무관) 4시 00분 주기(매일)
0 5 1 * * ping
-> 요일(무관), 월(무관), 1일 5시 00분 주기(매월)
0 5 * * 0 ping
-> 일요일, 월(무관), 일(무관) 5시 00분 주시(매주)
0 10-12 * * * ping
-> 요일(무관), 월(무관), 일(무관) 10시부터 12시사이에
0분마다 실행 주기(매일 3번)
0 4 * * 1-5 ping
-> 월요일부터 금요일까지 월(무관), 일(무관) 4시 00분
- 백업 방식 -
백업하는 방식에는 3가지가 있다.
완전백업(Full Backup) : 선택된 폴더의 모든 데이터를 저장하는 방식
증분백업(Incremental Backup) : 선택된 폴더가 완전백업이 수행된 이후 변경/수정이 있는 데이터만 저장하는 방식
차등백업(Differential Backup) : 선택된 폴더가 완전백업이 수행된 이후 변경/수정이 있는 데이터를 포함하여 모든 데이터를 저장하는 방식
이제 위의 명령어를 이용한 백업 실습을 진행하도록 하겠다.
backup 과 backuplist 라는 디렉토리를 생성하여
backuplist의 파일들을 backup 디렉토리에 백업을 진행하도록 디렉토리를 만들어주었다.
/etc 안에 있는 폴더를 backuplist로 옮겨서 디렉토리 안으로 파일을 복사하였다.
기본적인 환경을 맞추었고 스크립트를 이용한 증분백업을 진행하겠다.
증분백업의 계획은 년도별로 따로 디렉토리를 생성하여 백업파일을 따로 관리할 것이다. 만약 완전백업 파일인 Full-Backup 파일이 없으면 완전백업을 수행하고 완전백업한 파일이 있으면 증분백업을 수행한다.
우선 스크립트를 작성하여야 한다.
# vi backup.sh
명령어를 이용하여 스크립트 파일을 작성하였다.
내용은
이렇게 간단한 스크립트를 작성하였다.
5~7행 : 백업위치와 백업하는 파일들을 변수로 지정하였다.
9~11행 : date 명령어를 이용하여 9행은 요일, 10행은 날짜, 11행은 연도를 변수에 저장하였다.
13~17행 : 백업파일을 저장할 디렉토리가 있는지 확인하고 없으면 만들도록 하였다.
19~23행 : 연도 디렉토리가 있는지 확인하고 없으면 만들도록 하였다.
25~30행 : 완전백업 파일이 없으면 완전백업을 수행하고 완전백업한 파일이 있으시에는 증분백업을 하도록 하였다.
이 스크립트를 실행하려면 파일의 실행권한을 주어야한다.
# chmod a+x backup.sh
명령어를 입력하여 실행권한을 주었다.
위 스크립트를 직접 실행하여 백업이 잘 되는지 확인해보았다.
date 명령어를 이용하여 날짜와 년도를 바꾸었을 때 새로운 디렉토리를 만들고 완전백업, 증분백업을 진행하는 것을 확인하였다.
이제 이 백업 스크립트를 원하는 시기에 실행되도록 crontab 에 등록해보자.
# crontab -e 를 하여 크론탭을 수정할 수 있지만 실습 중 정상적으로 작동 하지 않아서 crontab 설정 파일을 직접 수정하도록 하겠다.
# vi /etc/crontab
으로 crontab을 직접 수정하였다.
정각 4시에 스크립트를 실행하도록 설정하였다.
설정 후
# service crond restart
로 crontab 데몬을 다시시작하였다.
이제 date 명령어를 이용하여 정상적으로 백업이 진행되는지 확인하겠다.
3시 59분으로 설정하여 1분 뒤에 crontab이 잘 실행 되는지 확인이 되었다.
'실습 > [CentOS]' 카테고리의 다른 글
[CentOS] 메일 서버 개념과 구축 (0) | 2020.07.27 |
---|---|
[CentOS] DNS서버 레코드Type 설정, Master/Slave 서버 (0) | 2020.07.23 |
[CentOS] 네임서버(DNS) 기본 구축 (0) | 2020.07.22 |
[CentOS] Telnet 서버와 SSH 서버 구축과 공개키 인증 (0) | 2020.06.30 |