CentOS 리눅스에서의 tar 백업정책 - 증분백업
리눅스를 사용한다면 대부분 tar 명령어에 대하여 한번쯤 들어보았을 것이다.
그럼 지금부터 tar를 사용한 백업과 복구 방법에 대해 알아보도록 하겠다.
1. tar 압축하기
tar도 어김없이 여타 리눅스 명령어와 같이 수많은 옵션들을 가지고 있다.
이옵션들중 자주 사용되는 옵션에 대해서만 언급하도록 한다.
파일이나 디렉토리를 압축하고자 할때에는 -c 옵션(compress)을 사용한다.
예를 들어 설명하도록 한다.
먼저 /home/multi/test1 디렉토리의 내용을 모두 백업하려면 어떻게 할까?
/home/multi/test1 디렉토리 아래에 test1.txt, test2.txt,
test3.txt이라는 3개의 파일을 만들어 두었다.
이 3개의 파일을 묶어서 압축해 보도록 하자. 묶음과 동시에 압축을 하기 위해서는
tar -czf [압축파일명] -C [압축할 파일들의 디렉토리경로] 형식으로 명령을
입력한다.
위와 같이 test1.tgz로 압축이 된 것을 확인할 수 있다. 그리고 -C 옵션은
기본 디렉토리의 경로를 지정할때 사용한다.
위와 같이 입력하면 /home/multi 디렉토리를 기준으로 그 아래의 test1
디렉토리를 지정한다는 의미다. 즉, /home/multi/test1 디렉토리하의 모든
파일을 현재 디렉토리에 test1.tgz 파일로 압축하겠다는 뜻이다.
압축을 한 다음에 압축한 파일이 정상적으로 압축이 되어 있는지 알아보도록 하자.
압축파일안의 파일리스트를 보기 위해서는 -t 옵션을 사용하면 된다.
위와 같이 표시된다면 이것은 압축시 기준 디렉토리의 경로를 /home/multi로
지정했기때문에 파일들의 경로는 test1 디렉토리가 최상위 디렉토리가 되어 압축이 된
것이다.
이 압축파일을 현재의 디렉토리에서 압축해제 하였을때는 아래와 같이 압축이 해제된다.
압축을 해제할때에는 -x옵션을 사용하여 아래와 같은 형식을 사용한다.
위에서 보는것과 같이 압축을 해제하면 현재디렉토리 아래에 test1이라는 디렉토리가
만들어지고 그 아래에 각 파일들이 압축해제된 것을 볼 수 있다.
그런데 압축해제된 파일 리스트를 보면 test1.tgz 파일이 보인다.
이것은 압축시 압축할 디렉토리안에 압축한 파일을 저장했기 때문이다.
이와 같이 압축할 파일이 있는 디렉토리안에 압축한 파일을 저장하지 말기 바라며, 압축한
파일의 저장위치는 왠만하면 다른 디렉토리아래로 하기 바란다.
다른 디렉토리아래에 압축한 파일을 저장 하기 위해서는 압축시 명령을 아래와 같은
형식으로 하면 되겠다. 즉 압축한 파일의 위치는 다른디렉토리로 전체경로를 적어주도록
한다.
위와 같이 하지 않고 기준 디렉토리를 최상위 / 루트디렉토리로 지정하여 압축하면
압축해제시에는 압축되어 있는 디렉토리 경로에 맞게 압축이 풀리게 된다.
/ 루트 디렉토리아래의 전체경로를 사용하여 압축하려면 다음과 같이 입력한다.
2. tar 압축해제
이번에는 tar로 압축한 파일들을 압축해제해 보도록 하겠다.
압축 해제는 아래와 같은 옵션으로 쉽게 압축해제가 가능하다.
앞서 압축한 파일에 대해 압축을 해제해 보도록 하자.
tar help 내용
3. tar를 사용한 풀백업과 증분백업
3-1. 증분백업하기
앞서 tar 명령을 사용하여 압축하는 방법에 대해서 알아보았다.
이번에는 tar 명령을 사용하여 증분백업을 하는 방법에 대해 알아보겠다.
일반적으로 tar를 사용해서 전체적인 풀백업을 하곤 한다. 하지만 풀백업을 하면 시간이
많이 걸릴뿐만 아니라 컴퓨터의 각종 자원낭비가 커질 수 있겠다. 그래서 보통 증분백업
방법을 많이 사용한다.
이 증분백업에는 -g snapshot-file 옵션을 사용하는데 지정한 스냅샷 파일에는
압축한 파일에 대한 정보를 숫자로 표시한다. 이 정보를 사용해서 이미 압축된 파일과
비교해서 증분백업을 수행하게 되는것이다.
위에서 만든 /home/multi/test1 디렉토리를 증분백업으로 백업해 보도록 하자
먼저 증분백업을 저장해둘 디렉토리로 /home/multi/backup 디렉토리를
생성한다.
그리고 방금 만든 백업 디렉토리에 test1.tgz 파일로 압축한다. 그리고 스냅샷
이름을 snap-test1 이라고 지정한다.
백업의 원본 파일이 만들어 졌으니, test1 디렉토리아래에 linux.txt 파일을
만들어 넣고, 다시 백업해 보도록 하자.
스냅샷 파일을 이용하여 증분 백업시에는 원본 백업파일에 추가적인 파일들만 백업하므로
백업파일명을 다른이름으로 지정하도록 한다.
여기서는 증분백업파일명을 test1-ymdHMS.tgz (날짜와 시간)형식으로
지정했다.
이렇게 증분백업 파일명에 자동으로 초단위 시간값이 입력되도록 하여 중복되지 않고 구분이
쉽도록 하였다.
증분백업시 위의 내용을 보면 test1-080221025404.tgz 파일이 추가적으로
만들어 졌는데 그 내용을 보면 아래와 같다.
위에서 보는것과 같이 초기 백업파일을 생성한 다음, 추가로 생성한 linux.txt
파일만 test1-080221025404.tgz파일에 포함되어 있는 것을 볼 수 있다.
이와 같이 새로운 백업파일을 생성할때 초기에 생성한 파일의 스냅샷 파일을 참고하여
추가로 생성된 파일만 새로운 압축파일로 생성 하도록 하는것이다. 이것이 바로 증분백업
방식이다.
그러면 다시 centos.txt 파일을 추가하고 증분백업을 해보자.
3-2. 증분백업 복구하기
이번에는 앞서 증분백업한 내용을 복구해 보도록 하자.
백업파일들은 아래와 같다.
백업을 복구하기 위해서는 아래와 같이 복구하도록 한다.
먼저 스냅샷 파일을 만들기위해 최초로 만든 백업파일인
test1.tgz파일을 압축해제하고, 다음으로 두개의 압축파일을 해제하면 원본
디렉토리의 파일들과 같게 된다.
원본파일 내용 (/home/multi/test1 디렉토리 내용)
원본 파일과 비교했을때 파일의 정보는 모두 동일함을 알 수 있다.
3-3. tar 증분백업의 자동화
증분 백업의 자동화는 cron을 이용하면 되겠다.
먼저 일주일 동안 증분백업을 한다고 정하였다면, 가장 먼저 주말 새벽에 스냅샷 파일을
사용하여 초기 백업파일을 생성해 두고, /etc/cron.daily 디렉토리안에 아래와
같은 명령어를 실행하도록 스크립트 파일을 작성해 두면 매일 지정된 시간에 자동으로 증분
백업을 받을수 있다.
tar 증분백업시에는 파일이 많아지면 나중에 복구할때 모든 압축파일을 해제해야 하므로
귀찮아 질 수 있다.
그래서 매주 한번씩 특정시간에 백업디렉토리의 모든 파일을 삭제하고, 스냅샷 파일을
이용해서 새로운 초기 백업파일을 만들도록 해 두고, 일주일동안 원본을 제외한 6개의
파일만 생성되도록 하는 것이다.
백업파일 재생성 스크립트는 아래와 같이 하면 되겠다.
test1.tgz 파일은 다시 백업하면 덮어쓰기 때문에 지워줄 필요가 없으며, 스냅샷
파일과 증분백업파일들만 삭제하고 새로 증분백업을 수행하도록 스크립트를 작성한다.
초기 백업파일인 test1.tgz 파일은 다시 백업하면 다시 덮어쓰기 때문에 지워줄
필요가 없겠다.
[참고 사항]
리눅스상에서 스크립트를 작성시에는 실행시 실행권한이 있어야 하므로 .sh형태로 만든
스크립트 파일들은 항상 chmod u+x
[스크립트 파일] 명령을 실행해 주도록 한다.
-끝-
|