이글루스 백업 툴에 관한 메모 V2

먼저, 전에 혼자 뭐 좀 해보려고 끙끙대며 조사한 내용들

#1 자동 로그인 및 월별 아카이브 페이지를 이용하는 아이디어 : http://lunaris.egloos.com/862213

#2 코멘트 및 트랙백을 읽어오는 메커니즘에 대한 참고 자료 : http://lunaris.egloos.com/830928

첫 페이지를 기점으로 모든 페이지를 다 크롤링하는 건 비효율적일 뿐 아니라, 부하도 많이 걸리는 일이다. 따라서, 아래와 같은 방법을 사용하는게 좋지 않을까?


(0) 로그인 절차를 거쳐 쿠키를 얻는다. (이후의 모든 서버 억세스에는 쿠키를 붙인다) 어떤 페이지를 어떤 방식으로 접근해야 하는지는 #1에서 분석된 바와 같다. (이글루스->WP 마이그레이션 툴 소스를 보면 보다 분명해진다)

(1) http://이글루주소/m1900-01-01 을 읽는다.

(2) <div class="ARCHIVE_BODY"> ~ </div> 내용을 읽고, 여기 포함된 <A> 태그의 href  attibute 들을 이용해 실제로 월별 아카이브가 존재하는 기간을 찾아 둔다.

(3) 각 월별로 http://m연-월-01 URL 을 읽어서 parsing 한다. 다른 정보는 욕심이 나더라도 대충 버리고, 가장 첫번째 POST division 에 주목한다. 이 부분은, 실제 포스팅이 아니라, 해당 월의 포스팅 제목들 및 #2 에서 이야기한 posting serial number를 가지고 있는 아카이브의 헤더 역할을 한다. 여기서, <a href=#serial > 형식들에 주목해서, regular expression 으로 해당 월 포스팅들에 대해 serial number 및 제목들을 몽땅 뽑아서, 인덱스 파일에 저장해둔다.

(4) #2 에서 조사한 바로는, 결국 해당 포스팅의 serial number 만 알면, permalink  는 물론이고, comment 및 trackback 이 튀어나올 hidden frame 용 URL도 자동으로 계산할 수 있다. 즉 포스팅 한 개에 대해 HTTP GET 이 3번 들어가면 그 글의 '모든' 정보들을 가지고 올 수 있다. 가지고 온 글의 내용을 parsing 하는 것은 (3) 절차를 해낼 수 있다면 결코 어렵지 않은 일일 것이다. 본문 내용에서 필요한 이미지 및 첨부 파일등은 가져오는 건 코더 개인의 능력에 달린 일일 것이다.

(5) 이글루스 서버에 무리한 부하를 주는 것을 막기 위해, 실제로 글의 내용을 가지고 올 때 절대로 멀티 쓰레드로 돌지 않게 하고, 또 한꺼번에 모든 글들을 다 가지고 오는 것 보다 월별로 한 번씩 작업하게 하자. 이사 가는게 너무 쉬우면 재미 없으니까. *웃음* 착하게 살자. 사실은, 모든 글들의 리스트를 보다 효율적으로 가져오는  방법은 사실 월별 아카이브를 뒤지는 것 보다 각 카테고리 별로 주어지는 '카테고리 보기' 화면을 이용하는 것이다.

(6)  이글루스의 카테고리 화면은 http://이글루주소/ i숫자  형식으로 이뤄지는데, 각 카테고리별 글 보기 화면 페이지에서 글들의 serial number를 빼내는 것 자체는 앞선 작업들과 별로 다르지 않다. 정작 그 이글루의 카테고리들이 어떤 어떤 것들이 있는가- 를 아는게 더 어려운데, 이걸 Menu 를 직접 분석하는 건 오히려 실속 없는 일이 될 것이다. 이땐 과감히 '글 관리하기' 페이지 앞부분의 <script>~</script> 내에 포함된 자바스크립트 소스 부분에다 정규 표현식을 걸어주는 센스를 발휘하자. var categoryValue = new Array ("","7","2","3","6","8","5","1"); 을 보며 7,2,3,6,8,5,1 을 뽑아내는 정도는 프로그래머의 자존심상 못한다는 얘긴 절대 할 수 없다.

(7) 가장 좋은 것은 (2)/(3) 에서 이야기한 '기간' 을 이용하는 것과 (5)/(6) 에서 이야기한 카테고리별 인덱스를 이용하는 두 가지 방법을 모두 제공하는 것이다. 즉, 유저가 원한다면 특정 기간의, 특정 카테고리 에 한해서 백업을 할 수 있는 기능을 제시할 수 있는 가능성이 충분하다.


by 가짜집시 | 2006/03/10 22:19 | 0 1 Nation | 트랙백 | 덧글(5)

트랙백 주소 : http://lunaris.egloos.com/tb/1279316
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by astraea at 2006/03/11 01:25
유료라도 공식 이전툴이 생기면 좋겠어요..
Commented by 자이젠 at 2006/03/11 01:53
아이고....어렵다...ㅜㅜ
Commented by gofeel at 2006/03/12 21:20
태터툴즈로 이전툴을 거의 다 짰습니다.
1. 저도 처음엔 그렇게 생각했는데 글 리스트는 글 관리하기에서 쉽게 얻을수 있었습니다. 고로 123은 필요 없더군요-_-;
2. 카테고리는 글관리하기에서 저 자바스크립트 부분을 잘 펐습니다. 순서까지 잘 ㅎㅎ
3. 트랙백은 /t일렬번호 코멘트는 /c일렬번호가 히든 프래임입니다.
4. 하여간 이젠 이미지만 처리하면 배포 들어갈껍니다. ㅎㅎ
Commented by 가짜집시 at 2006/03/13 22:42
이미지는 각 글의 본문에 정규 표현식 매칭 시켜주는게 가장 쉽지 않을까 합니다. 문제는 '외부 링크' 와 '자체 업로드' 를 구분하는 법인데, 원칙상 외부에서 링크한 (다른 이글루들까지 포함해서) 데이터는 이전시키지 않는 것이 바람직할 것입니다만 그 부분만 무시하면 pds?.egloos.com 을 링크하는 a tag 들을 죄 긁어오는 식으로 처리하는 게 무난하지 않을까 싶습니다. 소수라도, 이미지 파일 외에 일반적인 파일들을 업로드하는 블로그들도 있거든요 egloos+ 블로그들 중에서도 소수에 불과하긴 하지만 말이죠.

직접 짤 생각을 하면서 어떤 방향으로 짜고, 어떻게 나중에 써먹을 수 있는 도구로 만들지 짱돌을 굴리는 중이었는데 일단 태터 이전 툴이 나오는 거군요. 감사히 써먹겠습니다 ^^
Commented by gofeel at 2006/03/14 01:35
[#IMAGE를 태터 문법으로 바꾸고 이미지 리스트를 작성해서 다운로드 하는 방식으로 자체 업로드만을 처리했습니다. 사실 이글루스+가 뭐가 되는지는 잘 몰라서-_-;;
ps. 코드를 발로 짜서 큰일입니다...OTL 게다가 Ajax한번 써 먹어보자고 장난치다가 늦어지고 있습니다-_-;;;;

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶