강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

Cron을 이용한 로컬백업구현방법

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문



Cron을 이용한 로컬백업구현방법































제작자 : 리눅스포털(www.superuser.co.kr) 수퍼유저코리아 박성수









Cron을 이용한 로컬백업구현


서버백업은 아무리 강조를 해도 지나치지 않습니다.


여기서 설명드릴 내용은 서버자체 내부에서 백업되어야 할 데이터들을 압축하여 특정한 디렉토리(/backup)에 자동으로 백업되도록 하는 방법에 대한 것입니다.


대부분 이런 방법으로 구현을 하려면 특정한 쉘(여기서는 backup.sh)파일을 하나 만들어 둔 후에 cron이라는 것을 이용하여 주기적인 실행을 하도록 구현합니다.


여기에서도 백업내용을 담은 특정 쉘파일(backup.sh)를 만들어 두고서 이 파일이 주기적으로 특정한 시간에(주로 새벽시간대) 실행이 되어 특정디렉토리(/backup)에 저장이 되도록 설정하게 됩니다.


이런 작업을 로컬백업(local backup)이라고 합니다.


그럼 로컬백업을 구현하기 위해서 필요한 내용들을 정리해 보겠습니다.


- 백업 쉘파일(backup.sh) : 백업될 내용들을 담고있는 쉘파일

- 백업파티션(또는 디렉토리)생성 : 백업되어 저장될 공간확보

- cron에 의한 주기적인 백업실행 설정


그럼, 먼저 백업내용을 담고있는 백업 쉘파일(backup.sh)을 생성해 보도록 하겠습니다.


이 파일의 이름과 위치는 어디든 관계 없습니다. 단, 설정 내용의 정확성 여부는 꼭 확인을 하셔야합니다.


PIC2EE.gif


예로서 필자가 생성한 backup.sh 파일은 다음과 같이 설정하였습니다.


첫번째, /usr/local/apache 이하의 모든 내용을 usr.local.apache.tar.gz로 압축하여 /backup디렉토리에 저장을 하도록 설정하였습니다.


이것은 웹서버의 복구를 위해서 반드시 필요한 내용입니다. 물론, 아파치웹서버에서 꼭 필요한 부분만을 백업하는 방법도 있겠지만 복구를 빠르게 하기 위한 목적이라면 위의 예처럼 아파치 자체를 통으로 백업받아 두는 것도 좋은 방법이 됩니다. 


두번째, /usr/local/mysql 이하의 모든내용을 백업하여 usr.local.mysql.tar.gz로 압축하여 /backup디렉토리에 저장을 하도록 설정하였습니다.


이것 역시 Mysql 데이터베이스의 데이터를 포함한 모든 파일들이 압축되어 저장 될 것입니다. 이 방법을 대신하여 설정할 수 있는 방법은 데이터베이스를 개별적으로 백업하여 저장하는 방법이 있습니다.


자, 그럼 이번에는 이렇게 설정한 백업 쉘파일(backup.sh)를 주기적으로 실행하도록 설정하는 작업이 남았습니다. Cron설정을 위하여 "crontab e"라고 하면 cron에 설정을 추가할 수있도록 vi모드가 열리게 됩니다. 그곳에 아래와 같이 백업 쉘파일(backup.sh)의 실행내용을 추가합니다.

아래의 예는 cron설정이 완료된 후에 "crontab -l"로 설정내용을 확인한 것입니다.


 

PIC2EF.gif


여기서 확인하실 내용은 매일 오전 3시에 /home/papa/backup.sh가 주기적으로 실행되도록 설정되어있다는 것입니다.


그리고 이번에는 cron이 1회 실행된 이후에 백업내용들이 백업디렉토리(/backup)에 저장된 예를 보인 것입니다.



PIC2F0.gif


이 예를 보시면 생성된 파일들이 압축되어 새벽 3시경에 저장이 되어 있다는 것을 보실 수 있을 것입니다.


이렇게 매일 새롭게 로컬백업되는 내용들을 백업서버나 PC로 가져가는 방법이 있으며 앞서 말씀드린 바와같이 21장의 내용처럼 네트워크를 통한 자동백업을 구현할 수도 있습니다.


이상으로 로컬백업방법과 설명을 마무리 합니다.






패스워드 파일에서 ID만을 파일로 저장하기



이번에는 바로 앞에서 보았던 방법을 패스워드 파일(/etc/passwd)에서 활용한 것입니다.

즉, awk 라는 명령어에 있는 옵션중 F라는 옵션을 활용한 것으로 F라는 옵션으로 특정한 문자를 구분자로 사용하여 구분된 부분을 $1, $2, $3, ,$n등의 인자로 사용할 수 있습니다.

다음의 예를 보십시오.

PIC2F1.gif


  패스워드파일에는 ":"(colon)문자로 다음과 같이 구분되어 있습니다.


kpowerful:x:570:507::/home/kpowerful:/bin/bash

ID : 패스워드 : UID : GID : 설명자 : 홈디렉토리 : 사용하는쉘


따라서 패스워드 파일을 ":"(colon)으로 분리하여 첫번째인자만을 받아서 출력하면 ID만을 출력해 볼 수 있다는 결론이 나옵니다.


이번에는 이를 좀 응용하여 현재 사용자들의 계정명과 홈디렉토리만을 출력해 보도록 하겠습니다.


사용명령어 :

cat /etc/passwd | awk -F: '{print "계정명 :"$1"       " "홈디렉토리 :"$6}'

PIC2F2.gif


위의 예는 앞의 방법을 조금 더 응용한 것입니다.


즉 첫번째 인자와 6번째 인자를 간단한 양식으로 출력한 것으로 첫번째인자가 계정명이며 여섯번째 인자가 홈디렉토리위치이므로 이 둘을 출력한 것입니다.

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,810 개
  • 현재 접속자 :  76 명