현재 실 운영중인 서버 백업을

 

서버에 남는 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 파일이 생겼을때

 

원격 백업을 진행해야 합니다. 그래야 가장 최신 정보로 백업이 완전히 되는거니깐요 ㅎㅎ

  • profile

    운영하는 서버 로컬에 500G 하드라도 대략 계산해서 최근 N일 이전 것은 자동으로 삭제해주는 것을 추가해 주면 좋습니다. 관리 따로 안해도 알아서 오래된것 지워주니 용량 확인 안해도 되구요.

    rsync로 확보하는 것은 최후에 복구할 수 있는 용도로 활용하시면 좋을 겁니다.
    - 물론 여기서 조금 더 고급기술을 사용하면 가져 온 것을 날짜별로 구분할 수 있습니다. 하드링크라는 기술이라네요.

    원격서버에 저장하는 db도 매일 매일 날짜로 구분해서 저장하실 거면 마찬가지로 N일 이전 것은 지워주는 것을 넣어주시면 편리합니다.

  • profile ?
    네. 60일간 보존학고 삭제하는 스크립트를 만들어 두었습니다.

    60일간 모아 봤는데..... 7회정도 백업을 했더라구요...

    주 1회 꼴이네요.

    하드링크로 검색해서 열씨미 공부하겠습니다.

    웹지기님 증분백업 글 보고 저도 하고 싶어서 시작했는데... 갈길이 머네요 ㅎㅎㅎ

    앞으로도 많은 도움 부탁 드립니다.
  • ? profile
    저는 그 시간에 다른 것 하기로 하고 이제 서버 작업 같은건 제가 안합니다 ㅋㅋ 더 잘 하시는 분께 맡기는 걸로..
  • profile ?
    저 역시 웹지기님 생각에 100% 공감합니다.

    근데.... 뭘 알아야 애들 가르친다는 생각에 하나라도 더 배워 두고자 이렇게 또 삽질을 시작해 봅니다.

    당연히.. 조만간 진정한 증분백업을 전문가님께 의뢰를 드릴껍니다.

    뭘 알아야 이거해달라 저거 해달라 할수 있기도하구요.

    물론 개념적인 지식이 크게 없더라도

    전문가 분들께서 당연히 최적으로 셋팅해 주시지만...

    아직 젊은건지... 내 서버에 셋팅된 내용에 대해서는 이해를 조금더 해보고 싶네요 ㅎㅎㅎ

    말을 이리 했지만..

    그냥 한가해서, 아니면 또 몹쓸 병이 도져서..삽질을 또 시작하는건지도 모르겠네요 ㅋㅋ
  • profile

    150G 정도 여유있으시면 하드링크 적용안하셔도 html rsync를 3군데 폴더에 번갈아가면서 하면 됩니다. 그러면 최근 3개 다른 날짜 확보 가능해요.(하드링크는 이 3개의 폴더에 실제 데이터가 아닌 파일의 링크정보를 이용해서 디스크가 추가로 소모되지 않는 것 이구요.)

    단, 백업 서버에서 미리 확보한 자료를 rsync로 복제해주시면 추가 원본만큼 트래픽은 아낄 수 있고 변경된 만큼만 트래픽 발생합니다.

    제가 예전에 출근해서 키는 사무용 노트북에 했던 방법입니다.

  • profile ?

    오호라.. 그런 방법이 있었네요. 날짜별로 3개를 로테이션 돌리면 되겠네요..

    근데 단순 로테이션이면... 1디렉토리, 2디렉토리, 3디렉토리 이렇게 되어 있다면..

    최초 1회 백업시 몽땅 15G다 백업 받는 꼴이 날수도 있지만..

    다르게 생각하면

    가령... 2번 디렉토리에 백업시

    백업시 앞서 받은 1디렉토리의 내용을 로컬에서 rsync로 2디렉토리로 동기화 시킨다음

    2디렉토리를 실 서버와 다시 동기화 시킨면... 1디렉토리 증분값에다가 다시 증분하는 꼴이 되겠네요.

    잘만 구성하면 날짜별로 쭈~~~욱 몇일치 로테이션 시킬수 있을꺼 같습니다.

    도움 감사합니다.

    디렉토리명을 적당히 바꾸거나 하면 실 사용 가능할것 같습니다. ㅎㅎ

     

    ps : 급히 댓글다느라. 단, 뒷부분은 이제야 읽었네요 ㅎㅎ

  • ? profile

    오늘 받아온 데이터를 가지고 복제해서 1,2,3 폴더에 담았다고 치면요.

    다음에 1 폴더에 rsync 할때(월요일)는 원격서버에서 변경된 것 만큼 전송합니다.
    그다음 2 폴더에 rsync 할때(수요일)도 마찬가지로 원격서버에서 변경된 것 만큼 전송합니다.


    트래픽 전송량은 2폴더에 할때 조금 더 있을 수는 있습니다. 왜냐면 가지고 있는 데이터가 아주 최신보다는 조금 더 몇일 지난 것 이니까요.

    그런데 이게 백업에 문제가 전혀 안되니다. 트래픽 양도 별 차이가 없구요.

  • profile ?
    네 말씀 하신것에서 더 발전해서..

    앞전에 받은 디렉토리와 일단 최신 오늘날짜로 백업받을 디렉토리를 동기화 한 다음

    rsync 해버리면 가장 적게 쓸수 있는 방법이 되겠네요.

    트래픽 사실 얼마 안되지만... ㅎㅎㅎ
  • profile ?

    갑자기 좋은 방법이 딱 하나 또올랐습니다. ㅋㅋ

    아주 간단하게.. 그러나 리소스 사용은 좀 많지만..

    원격백업 서버에 /www/html 디렉토리는 하나만 유지하구요

    rsync를 통해서 원본 서버와 동기한 다음

    원격 백업 서버에서 /www/html 을 몽땅 오늘날짜.tar.gz로 압축해서 저장해버리리면...

    디렉토리 갯수 제한없이 그냥 용량되는데로 무한정 사용 가능할것 같습니다.

    한번 구성해 봐야 겠습니다. ㅎㅎㅎ

  • ? profile
    네. 그렇게 하셔도 되겠네요. 매일 압축하는 리소스가 부담이 안된다면 이라는 조건이 있지만요~
  • profile ?

    디렉토리 압축후 용량이 15G 정도 인데 압축 안하면 얼마나 나오는지 보고...

    어떤 방식을 사용할지 결정해야 겠습니다.

     

    ps : 압축한거랑 안한거랑 별반 차이가 없네요.. ㅋㅋㅋ 1G 정도 차이 나네요..

  • profile ?

    http://funnylog.kr/439

    위와 같은 좋은 방법이 있었네요..

    잘못 분석한건지 모르겠지만.

    단점이라면 current 쪽에게 항상 원본이 되는거 같은데 저걸 어느시점에 그러니깐... rm 대상 폴더를

    current에다가 덮어 써버리는게 더 좋아 보이도 하네요..

    그것도 좀 뭔가 이상하게... 그럼 다른 디렉토리들이 가진 변경파일이 의미가 퇴색 되는게 아닐까 생각도 되고 그러네요 ㅎㅎ

     

    ps: 잘못분석한것 같네요. ㅋㅋ