[LINUX] tar 증분 백업 해보기

2014. 4. 8. 18:37기술집/서버관련

728x90

 

넵.

먼저 왜 증분백업에 대해 포스팅을 하게 되었는가...부터 설명하겠습니다 ㅋㅋㅋ

관심 없으신 분들은 사진이 보일때까지 스크롤다운 해주세요 ㅎ

 

 

 

# 발단 #

 

이번에 아주 고맙게도 클라우드 서버가 스토리지 문제로 데이터가 날아가버렸습니다.

백업요?

당연히 안했죠!!

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

 

우선 1차로.. IDC의 백업서버를 믿고있었고..

2차로.. 곧 물리서버로 옮기려고 했었고.. 옮기고 나면 제대로 백업을 하려고 했었거든요.

 

문제는..

행동을 하려고하면 그날 뭔가를 하기전에 일이 터진다는것..

 

문제가 터진 그날..

오전에 자료들을 다 로컬로 내려받으려다가..

팀원들이 너무나도 열심히 작업들을 하고있길래..

저 작업만 끝나면 내려받자.. 라고 생각을 했더래죠...

 

근데...

작업이 끝날무렵쯤...

웹페이지에 세션관련해서 이상한 에러메세지가 뜨더라구요..

 

서버에 들어갔더니..

ls 명령어가 안먹히고..

명령어들이 하나둘씩 안먹히는 현상이 발생..

 

이건 내가 잘못한게 아니다!! 라는 느낌이 강렬하게 들어와서

호스팅업체에  전화를 했죠

명령어 자체가 안먹힌다.

서버 자체를 확인해봐라!

 

그랬더니.. 좀있다가 연락이 오네요..

 

스토리지 문제로 그랬습니다.

지금 마이그레이션 중입니다~

 

저는 끝나면 전화를 달라고 했습니다.

 

약 3시간 후 전화연락이 와서 끝났다고 확인부탁한다고 합디다.

들어갔는데 명령어는 잘 먹혀서 잘되는줄알고

확인 했다고 하고..

자료들을 내려받기위해 압축하러 갔는데...

갔는데....?!?

 

/home 아래쪽에 유저디렉토리가 텅텅~~~

 

순간 머릿속이 하얘지네요..

전화를 해서 데이터들 다 어디갔냐고 물어보니까..

파일 시스템이 정상적이지 않아서 표시가 안된다고 합디다..

네~네~ 그럼 어떻게 해야할까요??

디스크 스캔을 해봐야 알것같답니다.. 써글..

네~네~ 해주세요~!!

 

약 한시간후.. 스캔중이긴 한데.. 배드섹터가 많아서 복구가 힘들것같다고 하네요..

자체 백업서버에서 복구하면 안되냐고 물어봤습니다.

담당자한테 알아보겠다고 합디다.

 

조금 있다가 연락이 와서..

백업서버에 백업이 되어있는 파일도 정상적인 파일이 아니라고 합니다.

 

 

이런 된장!!!!

 

물론... 백업은 우리의 몫입니다.

아무리 서버를 옮길예정이라 하더라도 백업을 게을리한 제 책임이 큽니다.

하지만..

백업서버에 정상적인 파일을 백업할꺼라면..

도대체 그 백업서버는 누구를 위한 백업서버란말입니까~~~!!! ㅠㅠ

 

전기세도 아깝고.. 거기에서 쓸데없이 돌아갈 서버가 여러모로 낭비가 많으니까

그냥 백업서버는 쓰지 마시죠..ㅡㅡ

왜 씁니까? 백업도 안되는 데이터를 백업해놓을꺼면서..ㅡㅡ

 

짜증이 나긴했지만.. 이용약관이나 그런데에서 명시되어있는 부분이 아니기때문에

짜증을 낼 수는 없었습니다.

솔직히.. 조금은 냈습니다 ㅋㅋㅋ

백업서버는 왜 있는거냐면서 한마디 하긴했죠 ㅎ

 

사태는 이미 벌어졌고...

저는 복구하는데 밤새고..다음날 밤 11시까지..

즉.. 10시에 출근해서 37시간 일하고 퇴근했습니다.

눈알이 빠지려고 하더군요 ㅋㅋㅋㅋㅋ

 

그래도.. 뭐.. DNS에 IP 새로 바꾸고 그사이에 데이터 옮기고 확인작업 하고..

이렇게 따로 작업할 필요는 없어졌었죠..

바로 새 서버에다가 복구작업을 했으니까요..

다행히..

제 로컬에.. 약 한달 반 전의 백업파일이 있었습니다.

 

요 한달 사이에 엄청난 수정과 증축이 있었는데...

그나마 다행이었죠...

 

 

뭐... 그런이유로 새 서버에다가 바로 백업을 받기위한 스크립트를 짜고 크론 설정을 했습니다.

 

 

그래서!!!!

 

처음에 쉘스크립트로 증분치를 뽑아서 백업을 하려고 생각했었지만..

조금 조사를 하다보니 tar 명령어로 증분압축이 가능하다는 사실을 알았습니다 ㅎㅎ

 

모르시는 분들을 위해 기록을 남깁니다 ㅎ

 

 

# 증분백업하기 #

 

먼저.. /home 에 test 유저로 테스트를 합니다.

디렉토리 : exe html php txt

각 디렉토리에는 디렉토리이름의 파일이 있습니다.

exe 디렉토리에는 b.exe, bb.exe, bbb.exe 가 있죠.

나머지도 동일합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

증분 백업을 하기위한 작업은 두단계로 나뉩니다.

1. 해당 디렉토리를 풀백업 하면서 리스트를 작성한다.

2. 1에서 작성된 리스트를 참조해서 변화가 있는것만 백업한다.

 

 

우선 1 의 작업을 합니다.

아래처럼 명령어를 실행시킵니다.

 

tar -g [리스트이름] -zcvf [압축파일이름] [압축 대상 디렉토리]

 

리스트 이름에는 확장자 불요 입니다 ㅎ

아래 사진을 참고하세요.

 

 

 

 

test 라는 리스트가 생겼고.. 풀 백업 파일이 생겼습니다.

하지만 압축할때 뭔가 뜹니다...

Directory is new

말 그대로입니다.

이번에 테스트로 쓰던 디렉토리들이 새로 생겼기때문에 저런 메세지가 나옵니다.

 

좀 더 자세히 설명드리면..

 

최초 실행시 test라는 리스트파일을 참조하라고 명령은 했습니다.

하지만 test라는 리스트파일이 없기때문에 새로 작성을 합니다.

그리고 그 리스트 파일에는 아무것도 안들어 있습니다.

당연히 디렉토리들은 새로 만들어진것으로 인식이 되는거죠.

 

그럼 한번 더 하면 안떠야겠죠?

한번 더 해보겠습니다.

따라하지마시고.. 결과 확인만 해주세요!!

 

 

 

 

 자... 없어졌죠? ㅎㅎ

그럼 해결!! ㅎㅎ

 

이제 풀백업이 끝났고.. 리스트도 작성이 되었으니

증분 백업을 한번 해봐야겠네요.

그전에.. 정말 증분치만 백업을 하는지.. 확인을 해보겠습니다.

 

php 디렉토리에 php파일을 하나 추가를 시켜보겠습니다.

 

 

 

 

파일이 하나 늘었습니다.

그럼 여기서 증분은 어떻게 하느냐!!!

 

풀백업의 명령어랑 똑같습니다.

 

tar -g [리스트이름] -zcvf [압축파일이름] [압축대상 디렉토리 이름]

 

다만.. 압축파일이름까지 똑같으면 엎어쓰겠죠?

증분이란걸 알수있게 번호를 붙여보겠습니다.

 

 

 

 

결과를 보니..

풀 백업할때 나왔던 리스트파일과 압축파일이 보이고..

방금 만들었던 php 파일이 보였습니다!!

 

그렇다면.. 정말로 증분치만 백업이 되었는지 확인을 해보겠습니다!!

 

디렉토리 bo1, box2를 만들어서 box1에는 풀백업, box2에는 증분백업을 풀어보겠습니다.

 

 

 

 

보이십니까!!!

풀백업을 한 box1/php 에서는 index.php 파일 하나뿐입니다.

 

box2/php 에서는 증분백업을 위해 나중에 만든 index_01.php 파일 만 있습니다.

기존의 index.php파일은 없습니다.

 

말 그대로 나중에 추가된 파일만 건져낸것입니다 ㅠㅠ

 

※box1에 아무런 파일이 안보이시는 분은..

처음으로 돌아가셔서 하지말라고 하는 부분은 안하시고 진행하시면 보입니다 ㅋ

 

확인 사살차...

exe디렉토리를 비교해보겠습니다.

 

 

 

기존 파일은 없죠?

확실하게 증분백업을 하게된겁니다!!

 

그럼.. 파일을 삭제한 경우에는??

 

index_01.php를 삭제하고.. 새로 증분백업을 한 뒤 box3에다가 풀어서 확인해보겠습니다.

 

 

 

 

없습니다.

index_01.php파일이

파일 삭제도 없어진다는것을 알았습니다.

 

샷은 안찍었지만... 파일 내용이 변경이 되어도 뽑아내는군요..

 

증분백업의 내용을 요약하자면 아래와 같습니다.

 

1. 풀백업은 반드시 필요하고 풀백업시 리스트 파일을 작성해야한다.

2. 풀백업을 기준으로 추가/수정/삭제 된 파일을 뽑아서 압축한다.

3. 디렉토리의경우 추가/삭제된 디렉토리를 뽑아서 압축한다.

 

 

복원할때에는..

 

먼저 풀백업파일을 복원하고,

증분 백업된 파일중 가장 최근파일을 복원하면 끝입니다 ㅎ

 

 

이제 남은건...

디렉토리 트리를 구상하시고 스크립트를 짜신다음에 크론에 등록하시면 백업시스템 완료!!

 

저같은경우는..

backup유저를 만들어서 홈디렉토리에 풀백업을 먼저 했습니다.

그래고 [년월]로 된 디렉토리가 없으면 만들고.. 있으면 그 디렉토리안에 [일]_[압축파일이름].tar.gz 로

매주 월요일에 압축하도록 설정을 했습니다.

풀 백업은 4개월에 한번 받도록 했습니다.

나름 대용량이라서.. 계속 증분치만 백업해도 나중에는 그 증분치의 용량이 엄청 늘어날테니까요 ㅎㅎ

 

매주월요일에 2중백업차 내려받아야겠네요..

으휴...힘들다 ㅎㅎ

 

암튼.. 저처럼 대용량 백업에 머리싸매신 분들이계시다면..

조금이라도 도움이 됐음 좋겠네요 ㅎㅎ

 

 

혹시 내용중에 틀린부분이나 부족한 부분이 있으면..

 

부디 지적과 가르침의 한마디를 부탁드립니다 ㅠㅠ

728x90