Hexo 배포 원리에 따른 백업 방법

Hexo를 이용해서 블로그를 만들고 관리 하다보니 문제점을 하나 발견했다.
바로 백업에 관한 문제인데 Hexo 블로그는 Github에 repository를 통해 구성되어 있으니
다른 곳에서 작업할때 그것을 clone해서 수정하면 된다고 생각했다.

그러나 다른 곳에서 clone을 해보고는 문제가 있음을 알수 있었다.
라이브되는 repository에 올라가는건 public 폴더의 내용이라 실제로 작업한 것은 올라가지 않는다는 것을 말이다.

그래서 해결책으로 별도의 repository 하나를 생성하여 별도로 백업을 하기로 했는데
이 방법도 문제가 있었다. Hexo의 테마들을 각자의 git을 가지고 있어서
git 안에 git이 있어 재대로 관리가 되어지지 않았다.

그래서 검색을 통해 알아보다가 git의 서브모듈(submodule)을 이용해서 백업 하기로 했다.

새 저장소 생성

저장소는 총 2개가 필요합니다. 테마를 저장할 저장소나머지 블로그 자료를 저장할 저장소 이렇게 2개 입니다.

새로운 repository 만들기

저는 제가 사용하는 테마의 이름인 icarus라는 저장소와 blog_backup 이라는 두개의 저장소를 private로 만들어 줬습니다.

  • 2019.01.07일부로 Github의 private 저장소가 무료로 전환 되었습니다.

테마 백업

먼저 테마폴더를 백업해줍니다.
보통 테마를 설치 할때는 아래와 같은 명령어를 사용합니다.

bash
1
git clone https://github.com/ppoffice/hexo-theme-icarus.git themes/icarus

물론 위와 같은 방법으로 설치해도 백업문제만을 제외한다면 아무런 문제없이 잘 작동합니다.
그러나 여러 컴퓨터에서 포스팅을 해야 하는 상황이 발생한다면 백업의 문제가 발생합니다.

그래서 설치되어 있는 테마의 원격 저장소의 주소를 변경해줍니다.

bash
1
2
3
4
5
6
7
8
9
10
11
12
# 테마 폴더에서 원격 저장소를 확인합니다.
$ git remote -v

# 원격 저장소를 변경해 줍니다. (자신의 저장소 URL로 변경)
$ git remote set-url origin https://github.com/mishka86/icarus.git

# 변경된 원격 저장소를 확인합니다.
$ git remote -v

# 변경 사항 올려줍니다.
$ git commit -a -m 'theme backup'
$ git push -u origin master

블로그 자료 백업

블로그 폴더를 git으로 초기화 시켜줍니다.

bash
1
2
3
4
5
6
7
8
#git 초기화
git init

#현재 내용을 전부 커밋해 줍니다.
git commit -a
또는
git add .
git commit -m "커밋메세지"

테마폴더 서브모듈 추가

원격 저장소로 푸시 하기 전에 서브모듈을 추가해 주어야 합니다.
테마 폴더는 따로 git으로 관리되고 있으므로 submodlue로 관리 해주어야 합니다.

테마폴더는 이전 작업에서 백업을 해준것을 확인하고 삭제하여 줍니다.
그리고 git submodule 이용해서 서브모듈로 추가해 줍니다.

bash
1
2
3
4
5
6
7
8
9
# 미리 올려둔 저장소의 내용을 서브모듈로 추가한다.
# git submodule add <저장소주소> <테마폴더>
git submodule add https://github.com/mishka86/icarus.git themes/icarus
#변경된 후의 git submodule status 이용해서 확인 하여준다.
$ git submodule status
46cf786d5356d36fcac4dc80abbebb56a71dae9b themes/icarus (heads/master)

# 변경된 내용을 모두 커밋
$ git commit -a

새로운 테마를 설치 할때로 git clone이 아니라 git submodlue을 사용해서 관리해 줍니다.

배포하기

bash
1
2
3
# 이제 브랜치를 원격 리파지토리에 올린다.
git remote add origin <저장소주소>
git push -u origin master

두개의 저장소에 테마와 블로그 내용을 별도로 백업을 했습니다.
이로써 안전한 백업과 어디서든지 접속하여 deploy 할 수 있게 되었습니다.

댓글

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×