현재 실 운영중인 서버 백업을
서버에 남는 HDD가 있어서
오늘날짜.tar.gz 와 오늘날짜.sql로 날짜별로 차곡 차곡 백업을 받고 있습니다.(/backup 디렉토리)
(완전 무식한 방법이죠 ㅎㅎ)
백업용 HDD 용량이 500G 정도 되어서 백업에는 큰 문제가 없습니다.
좀 무식한 방법이지만.. 그래도 올드한게 좋아서라기 보다는.. 실력이 없어서...
로컬에서 하는것이다 보니
트래픽 비용을 내지 않아도 되니 날짜별로 모으는것도 큰문제는 안되고..
가장 중요한것은 증분 백업개념이 별루 없어서요 ㅋㅋㅋ
암튼..
요즘 랜섬웨어 등으로 말썽이 많아서 같은 서버에 백업하는 것도 중요하지만
원격지에 백업을 하나더 마련하고 싶었습니다.
그럼 당연히 증분 백업을 해서 트래픽을 최소화 해야 하는게 맞겠죠.
허나....
실력도 안되고 돈도 아껴보고자 엉터리 원격 백업 서버를 하나 만들었습니다.
학원에 쿨링팬 소리가 좀 심한 구형 컴퓨터가 있어서...
HDD 150G 정도 되는녀석인데 몇일 치라도 백업을 받자는 생각에
일단 .tar.gz는 백업 받으면 용량이 개당 15G정도 되서.. 이건...트래픽 감당이 안될것 같아서..
.tar.gz 파일 만들었던 원본 디렉토리
그러니깐...
/var/www/html 디렉토리를 rsync를 통해서 서버와 원격지 백업서버를 --delete 옵션을 줘서 동기화 시켰습니다.
일종의 증분 백업이라고 볼수 있지만 진정한 증분백업은 아니죠 ㅎㅎ(동기화가 맞는 표현이겠네요 ㅋㅋ)
(불필요한 캐시를 제거할까 하다가.... 용량이 얼마 안먹어서.. 그냥 뒀습니다. 당장 복구후에 사용하기 편할까봐요 ㅎㅎ)
그리고
.sql 파일은 압축전 용량이 1.5G 정도 되던데
이것도 디비명-오늘날짜.sql 형식으로 되어 있어서...
rsync를 이용해서 증분 백업을 걸었습니다.(--delete 옵션 사용)
말이 증분백업이지..... 날짜별로 .sql 파일을 차곡 차곡 복사해오는거죠.. ㅎㅎㅎ
(압축 전송이 되니깐. 250메가 정도 되네요)
(기존에 누적된 .sql 파일은 지우고 최신꺼 하나만 남겨두고 작업했습니다. 지금부터 살살 백업파일 모으면 되니깐요)
이 시스템의 치명적인 단점은
최종단계의 백업만 기억한다는점....
아쉬우나마 DB는 날짜별로 차곡 차곡 쌓은걸 복사해오는거라서... 원하는 날짜로 복구할수 있다는 장점이 있지만...
장점 아닌 장점으로 남게 되었습니다.
사용한 코드는
rsync -avzrh --delete root@도메인명:/var/www/html /var/www
rsync -avzrh --delete --exclude '*.gz' root@도메인명:/backup/ /backup
(서버의 backup 디렉토리에 .tar.gz로 백업 받은 기존파일을 무시하기 위해서 --exclude 사용했습니다.)
(원격지 백업은 저는 그냥 디렉토리 /var/www/html 동기화를 선택했으니깐요)
이렇게 사용하였습니다. ㅋㅋㅋ
대략 1회 백업시 .sql 250M 와 디렉토리 동기화에 20M 정도 소요되네요.
일단 이렇게 하면서..
공부해서 진정한 증분백업을 실현하고자 합니다.
앞으로 도움 많이 받도록 하겠습니다.
미리 감사합니다. ㅎㅎㅎ
ps : 원격지 백업 서버는 백업할때만 켜서 잠깐하고.....나머지는 꺼둡니다.
그리고 단점이 하나 더 있는게
서버에서 기존 백업을 실시한뒤 최신 .sql 파일이 생겼을때
원격 백업을 진행해야 합니다. 그래야 가장 최신 정보로 백업이 완전히 되는거니깐요 ㅎㅎ
운영하는 서버 로컬에 500G 하드라도 대략 계산해서 최근 N일 이전 것은 자동으로 삭제해주는 것을 추가해 주면 좋습니다. 관리 따로 안해도 알아서 오래된것 지워주니 용량 확인 안해도 되구요.
rsync로 확보하는 것은 최후에 복구할 수 있는 용도로 활용하시면 좋을 겁니다.
- 물론 여기서 조금 더 고급기술을 사용하면 가져 온 것을 날짜별로 구분할 수 있습니다. 하드링크라는 기술이라네요.
원격서버에 저장하는 db도 매일 매일 날짜로 구분해서 저장하실 거면 마찬가지로 N일 이전 것은 지워주는 것을 넣어주시면 편리합니다.