출처 : http://kwoncha.blogspot.com/2011/07/rsnapshot.html
rsnapshot 작동 원리
(특히 '부주의한 사용자로부터') 데이터파일을 보호한다는 주제는 참으로 어려운 것으로 생각했었는데 예전에 읽었던 백업관련 문서에서도 실용적인 답을 알려주지는 못했었다.
rsnapshot은 (내 경우는) 아주 괞찮은 정도의 안정성과 유연성을 보장하지만 '완벽한 정도'의 안정성을 원한다면 위의 백업관련 문서에서 제시된 방법을 병행할 수 있을 것이다.
처음 이것을 발견했을 때 나는 정말 깜짝 놀랐다.
Apple의 Timemachine을 부러워하던 나는 평소에 하던 대로 인터넷을 샅샅이 뒤졌었는데
이럴수가!! 애플에서는 버럭 하며
"나는 BSD Hacks(또는 다른 Hacks)를 참고했지만 그게 다가 아니야!"
라고 말할 수도 있겠지만…. 'Timemachine과 rsnapshot의 차이라고는 아이콘을 끌어서 복사 하는 것과 cp명령을 이용해서 복사하는 것의 차이 정도 밖엔 안된다.'는 것을 알게 되었다.(개인적인 의견임)
하지만 Timemachine이 주소록이라든지 기타 DB기반 프로그램들에서도 기대한 대로 작동한다는 것은 파일에만 적용되는 간단한(그렇지만 정말로 기발한) 아이디어만으로는 할 수 없었던 일인 것은 인정! 그리고 그 애니메이션도 정말 AWESOME!!
긴 서론에 비해 본론인 rsnapshot의 원리는 미안하게도 너무도 간단해서 허무하다.
이 유틸리티는 다음의 순서로 작동한다.
* 평소에 사용하며 계속 복제할 디렉토리 = Using의 U,
백업디렉토리 = Backup의 B0, B1, B2으로 표현하기로 한다.
- 백업대상 디렉토리 U 전체를 우선 B0 디렉토리에 똑같이 복제한다(다른 파티션이건 같은 파티션이건, 1회 수행)
- 복제된 디렉토리 B0의 모든 파일을 다음 복제 디렉토리 B1으로 하드링크한다.
- U 디렉토리에서 바뀐 내용이 있는지 확인하기 위해 U디렉토리와 B1디렉토리를 rsync로 비교하여 바뀐 부분만 지우고 복사한다.(이렇게 해서 B0에는 최초 U의 내용물이 영원히(?) 그대로 남고 B1의 내용들은 현재의 U와 완전히 동일하게 된다. 그리고 실제로 늘어난 기록량은 바뀐파일의 사이즈만큼이다. 정확히는 U와 B1에 하나씩이니 두배가 되겠다.)
- 디렉토리 B1의 모든 파일을 디렉토리 B2로 하드링크하고 U와 비교. 이후 반복한다.
위와 같이 설정에 정해진 주기로 계속한다.
U 디렉토리에 대해 사용자들은 삼바가 됐건 ftp가 됐건 netatalk가 됐건 네트워크를 통해 계속해서 파일을 읽거나 가끔 기록하며 사용할 것이다.(내 아내의 경우 작업실에서 이미 Samba 및 Netatalk를 이용해 직원들과 파일을 주고 받아왔다. 물론 본인은 '그게 뭐야?' 하겠지만…)
만약 사용자의 계정에 있던 파일이 실수로 덮어씌워졌다면?(아래아 한글의 블록저장에 당해본 분은 그 심정을 알 것이다.) 간단히 읽기 전용으로 공유되어있는 복제 디렉토리(B0~Bn)를 순서대로 클릭해보면 된다.
그리고…
보통의 유닉스 파일시스템에서는 지원하는 하드링크 개념을 아무리 설명해도 알아듣지 못하는 아내가 "도대체 복사를 수백번이나 하는데도 하드디스크가 꽉 차지 않는 이유가 뭐냐구?" 하면 "난 잘하니까~"라며 한번 웃어주면 된다. 아니면 데이트라도 신청하든가…
* 설명을 간단히 하고 요점에 집중하기 위하여 daily backup, weekly backup, 백업디렉토리의 명명(그리고 주기적 변경)규칙 등은(이것도 간단하지만)은 생략했습니다.
* 처음 접하고 시도하던 당시에는 테스트도 안해본 것을 막 써서 올리기가 꺼려졌던 것인데 작년부터 묵묵히 작동하면서(고물 HDD가 조금 걱정스러워서 하드웨어를 교체했지만) 가끔 위기 상황을 해결해 준 것을 겪은 후 게시하는 것입니다.(지난 게시물들 참고)
Guru나 Hacker들은 다 알고 사용하는 것인지. 아니면 그들의 문제를 해결하기에는 너무 소규모의 도구여서인지 아쉽게도 국내에는 rsnapshot에 대한 글이 별로 없습니다.
우리 아내의 작업실 환경에서만은 깜찍하게(그리고 있는 듯 없는 듯) 돌아가다가 멋지게 한건씩 올리고있는 '백업, 공유, DVD 감상 TV셋톱 겸용 서버'를 보고 저는 다른 (거의)모든 OS의 네트워크를 포용하는 도구, 컴퓨터를 자신의 '일'에 사용하는 사람들에게 '저를 배우세요'라고 강요하지 않으면서도 '저를 사용하시면 멋진 걸 드릴게요'라고 조용히 속삭이는 도구, rsnapshot, 아니 리눅스를 자랑하고 싶었습니다.