KLDP 서버 HDD 손상으로 인한 파일 소실에 대한 도움 요청

권순선의 이미지

KLDP BBS서버의 HDD가 지난 10월 25일에 물리적으로 손상되어 데이터 복구 업체를 통해 복구를 시도하였으나 복구가 불가능하다는 판정을 받았습니다. 그에 따라 손상된 HDD에 저장되어 있는 데이터 전체가 소실되었습니다.

일부 예전에 백업해둔 파일들을 가지고 최대한 복구를 하였으나 완전한 복구는 하지 못했습니다. 각 사이트별 소실 내역은 다음과 같습니다.

1. KLDP Wiki: 최근의 위키텍스트들이 소실되었으나 attachment들은 소실되지 않았습니다. google cache에 남아 있는 내용들을 저장하여 주신 분들의 노력이 있었기에 현재 google cache에 남아 있는 내용을 저장한 다음 파일들을 활용하여, 위키텍스트로의 일괄 변환후 일괄 복구 작업이 필요합니다. 중복된 부분도 있기 때문에 KLDP Wiki 안이나 이곳에서 별도로 일괄 변환/복구 작업에 대한 논의가 필요합니다. 혹 관심있는 분들은 아래 파일들을 받아서 좋은 방법을 고민해봐 주시면 감사 드리겠습니다.

http://kldp.org/download/kldp.tar.gz
http://kldp.org/download/kldpwiki.tar.gz
http://kldp.org/download/wiki.kldp.org.google.cache.tar.gz

2. KLDP.net: 일 단위로 매일 백업을 받았기 때문에 소실된 데이터는 거의 없습니다. 거의 완전한 상태로 복구가 되어 있고, 복구 작업 과정 도중에 기반 소프트웨어의 업그레이드/튜닝 작업도 같이 진행하였으므로 사용 환경은 더 좋아졌습니다. 11월 6일 현재 메일링 리스트 등 일부 기능들이 제대로 동작하지 않고 있으나 별다른 문제 없이 해결이 가능할 것으로 생각됩니다.

3. KLDP BBS: database는 덤프가 되어 있어 HDD가 손상된 날 아침 상태로 백업이 되어 있고 현재 운영 중입니다만 사용자들의 첨부 파일들과 각 사용자들의 아바타, 사용자 등급을 위한 아이콘들이 소실되었습니다. 혹 소실된 파일들을 가지고 계신 분은 해당 파일들을 이 글에 대한 답글이나 파일이 빠진 해당 글타래에 올려 주십시오.

4. geekforum: 금년 초에 운영을 중단하던 시점의 상태로 복구가 되어 있습니다.

이번 일을 계기로 백업의 중요성을 뼈저리게 절감하게 되었습니다. 제대로 관리가 되지 못한 점 진심으로 사과드리며 향후 이같은 일이 다시 발생하더라도 최대한 복구가 될 수 있도록 적절한 방법을 통해 필요한 파일 자료들에 대한 분산 백업을 실시할 예정입니다. 사용자들의 개인 정보와 관계된 내용들은 제한적인 범위 내에서 분산 백업하고 개인 정보가 아닌 파일/문서 자료들은 최대한 공개적으로 백업할 수 있도록 하려 합니다. (일종의 미러링) 자세한 것은 준비가 되면 따로 공지하도록 하겠습니다.

이번 일에 대해서 다시한번 진심으로 사과드립니다.

File attachments: 
첨부파일 크기
Binary Data convert_tmp.py.gz965바이트
관리자 주제: 

댓글

wkpark의 이미지

어제도 잠시 말씀드렸지만 :)

위키에서 만들어내는 html은 어느정도(?) 정규화되어 있습니다.

예를 들어서,

<b>굵은글씨</b> : '''굵은글씨'''
<a href=링크>링크텍스트</a> : [링크 링크텍스트]
== 제목 ==
-->
<h2>제목</h2>

 * 리스트
-->
<li>

스크립트를 영리하게 만들거나 하면 위키문법으로 어느정도 바꿀 수는
있을 것입니다.

그러나, 완벽하게 바꾸는 것은 어렵겠죠.

누군가가 perl/python/php로 스크립트를 짜주시면 좋겠네요.

모니위키에도 이러한 비슷한 목적으로 만든 action이 있긴 한데, html테그가 많지 않은 경우는 어느정도 작동을 하는 것 같습니다만, 위키문법으로 랜더링된 html은 일반 html보다 조금 복잡해서 잘 되지 않는것 같더군요.

http://wiki.kldp.org/wiki.php?action=importurl&http://캐쉬된 url

온갖 참된 삶은 만남이다 --Martin Buber

pynoos의 이미지

wiki 문서의 복원은 마지막 html 스냅샷으로 이루어지기 때문에 히스토리는 구할 수 없는 것이죠?

현재 위키 문법으로 복원은 어려운 상태인것 같습니다.
단지 내용위주로 건져야하는 상황인듯합니다.

문서개수가 만만치 않은 수인걸요..?

pynoos의 이미지

알단...
현재 wiki에 있는 것과 cache에만 있는 것을 구별하여 "복구 지도"를 만들어야할 것 같습니다.

권순선의 이미지

예, 소실된 문서 중 캐시에만 남아 있는 것들은 히스토리도 복구가 불가능합니다. 이 글타래의 첫 글에 캐시를 저장해둔 파일들이 있으니 복구에 도움을 주실 분들은 작업에 참고하십시오.

감사합니다....

mr.lee의 이미지

제가 최근 몇개월간 자바프로그램을 자동으로 C++프로그램으로 변환하는 프로젝트를 진행하고 있습니다만, 여기서 사용되는 변환기술을 활용해서 복구프로그램을 만들어볼 수 있을것 같은데요(사실. 무지 바쁘지만 ㅜ.ㅜ KLDP의 너무 소중한 자료들이 아까워서) 뭘 어떻게 바꿔야 하는지 조금 구체적인 설명을 해주시겠습니까?

일단, 제가 아는 사실을 적어본다면,

위키에서 최근것 빼곤 다 복구가 되었는데 최근것은 구글캐쉬에 있다.
구글캐쉬는 복구된 내용도 포함되어 있으므로 복구못한것만 복원하면 된다.

머. 이런것 같은데요.
우선, 구글캐쉬에서 각 위키문서파일들로 변환해주는 프로그램을 제작하고,
현재 복구된 위키의 문서제목 리스트를 뽑아주시면 (줄바꿈으로 나눠지면 되겠군요) 변환프로그램에서 이 리스트를 해쉬테이블로 만들어놓고 구글캐쉬의 모든 문서를 복구하는 루프돌면서 이미 있는 문서면 패스하게 하면 될것같습니다.

상단에 있던 파일 3개를 다 받아놓긴 햇는데요. (아직 별로 살펴보진 않았습니다만) 복구에 사용해야 구글캐쉬는 wiki.kldp.org.google.cache.tar.tar 죠? 나머지는 이번 복구때 사용된 예전 백업파일인것같은데..

압축을 푸니 dp디렉토리는 별거아니고.. kldp디렉토리 하위에 같은 트리구성의 cache, html, text 가 있네요 text는 전혀 html태그가 없으므로 제외하고, cache, html은 뭐가 틀리나요? cache를 사용해야하는건가요? 그리고 하위에 howto, koreandoc, translations, wiki, wiki.php 이렇게 5개의 디렉토리가 있고 각각 문서들이 있는데요, 다 복구해야하나요? 아님 wiki.php만 하면되나요?
제가 보기엔 cache의 wiki.php안의 문서들만 복구하면 되지 않나 싶네요(물론, 이미 복구된 문서들은 복구과정에서 제외)
그리고, 파일을 하나 열어보니 제일 상단 박스안에 구글 안내말빼고 나머지 밑부분은 위키문서와 동일하게 보이는데 어디가 어떻게 바껴야 하는지 대략이라도 알려주시면 제가 시간절약을 할 수 있을것 같으네요.

WordIndex라는 파일이 보이네요. 여기가 위키 제목리스트 문서같은데... 위에는 문서제목이고(한글도 제대로 보이는군요) 밑에는 경로인듯 한데 (한글은 다 깨졌네요-전 지금 윈도우-eucKR인가요?) 이미 복구된 리스트틑 다른 압축파일의 WorldIndex를 참조하면 되는건가요?

위키는 위키스타일의 텍스트와(입력당시의) html로 변환된 텍스트 2가지가 있을터인데 이것이 html, text 디렉토리의 의미인가요? text디렉토리의 문서들은 최초 입력 후 1차 변환이 된상태인지 조금 달라보이는군요. 둘 다 복구해야 하는건지요?

질문의요지는, 어떤 문서가 어떤식으로 바껴야 하는건지를 대략 알려줬음 하는것입니다.

중구난방으로 질문올렸습니다. '가능하면' 제가 주말까지 한번 복구를 해보겠습니다만 혹 지금 하는일때문에 도저히 시간을 못내더라도 양해바랍니다.

권순선의 이미지

감사합니다... 제가 지금 손가락을 다쳐서 길게 못 쓰는데... 최대한 간략하게 말씀 드리겠습니다.

구글캐쉬에 있는 것을 위키텍스트로 변환하는 작업이 필요하고요...

wiki.kldp.org.google.cache.tar.gz에서 cache와 html은 같은 디렉토리일 겁니다. 그리고 howto, koreandoc, translation 디렉토리는 변환하실 필요가 없고요... wiki.php 아래에 있는것 중에서 현재 wiki.kldp.org 에 있는 것만 변환하시면 됩니다.

아니면.... 그냥 현재 구글캐쉬 html 파일을 위키텍스트로 변환하는 프로그램만이라도 있으면 하나하나 수동으로 변환하거나 그 프로그램을 쉘스크립트로 돌려서 일괄변환하는게 가능하겠죠. 예를 들면

google2wiki inputfile 이렇게 실행해서 inputfile에는 구글캐쉬를 넣고 표준출력으로 위키텍스트를 출력하게 하면 > 같은걸 이용해서 원하는 파일명으로 저장할 수 있겠죠. 아니면... 구글캐쉬에서 파일명을 자동으로 인식해서 해당 파일명(위키페이지명)으로 저장되게 하는 것도 좋고요.

감사합니다... 혹시 제가 모호하게 쓴 부분이 있다면 다시 글 올려 주세요.

SaNha wrote:
제가 최근 몇개월간 자바프로그램을 자동으로 C++프로그램으로 변환하는 프로젝트를 진행하고 있습니다만, 여기서 사용되는 변환기술을 활용해서 복구프로그램을 만들어볼 수 있을것 같은데요(사실. 무지 바쁘지만 ㅜ.ㅜ KLDP의 너무 소중한 자료들이 아까워서) 뭘 어떻게 바꿔야 하는지 조금 구체적인 설명을 해주시겠습니까?

일단, 제가 아는 사실을 적어본다면,

위키에서 최근것 빼곤 다 복구가 되었는데 최근것은 구글캐쉬에 있다.
구글캐쉬는 복구된 내용도 포함되어 있으므로 복구못한것만 복원하면 된다.

머. 이런것 같은데요.
우선, 구글캐쉬에서 각 위키문서파일들로 변환해주는 프로그램을 제작하고,
현재 복구된 위키의 문서제목 리스트를 뽑아주시면 (줄바꿈으로 나눠지면 되겠군요) 변환프로그램에서 이 리스트를 해쉬테이블로 만들어놓고 구글캐쉬의 모든 문서를 복구하는 루프돌면서 이미 있는 문서면 패스하게 하면 될것같습니다.

상단에 있던 파일 3개를 다 받아놓긴 햇는데요. (아직 별로 살펴보진 않았습니다만) 복구에 사용해야 구글캐쉬는 wiki.kldp.org.google.cache.tar.tar 죠? 나머지는 이번 복구때 사용된 예전 백업파일인것같은데..

압축을 푸니 dp디렉토리는 별거아니고.. kldp디렉토리 하위에 같은 트리구성의 cache, html, text 가 있네요 text는 전혀 html태그가 없으므로 제외하고, cache, html은 뭐가 틀리나요? cache를 사용해야하는건가요? 그리고 하위에 howto, koreandoc, translations, wiki, wiki.php 이렇게 5개의 디렉토리가 있고 각각 문서들이 있는데요, 다 복구해야하나요? 아님 wiki.php만 하면되나요?
제가 보기엔 cache의 wiki.php안의 문서들만 복구하면 되지 않나 싶네요(물론, 이미 복구된 문서들은 복구과정에서 제외)
그리고, 파일을 하나 열어보니 제일 상단 박스안에 구글 안내말빼고 나머지 밑부분은 위키문서와 동일하게 보이는데 어디가 어떻게 바껴야 하는지 대략이라도 알려주시면 제가 시간절약을 할 수 있을것 같으네요.

WordIndex라는 파일이 보이네요. 여기가 위키 제목리스트 문서같은데... 위에는 문서제목이고(한글도 제대로 보이는군요) 밑에는 경로인듯 한데 (한글은 다 깨졌네요-전 지금 윈도우-eucKR인가요?) 이미 복구된 리스트틑 다른 압축파일의 WorldIndex를 참조하면 되는건가요?

위키는 위키스타일의 텍스트와(입력당시의) html로 변환된 텍스트 2가지가 있을터인데 이것이 html, text 디렉토리의 의미인가요? text디렉토리의 문서들은 최초 입력 후 1차 변환이 된상태인지 조금 달라보이는군요. 둘 다 복구해야 하는건지요?

질문의요지는, 어떤 문서가 어떤식으로 바껴야 하는건지를 대략 알려줬음 하는것입니다.

중구난방으로 질문올렸습니다. '가능하면' 제가 주말까지 한번 복구를 해보겠습니다만 혹 지금 하는일때문에 도저히 시간을 못내더라도 양해바랍니다.

mr.lee의 이미지

에구, 뭘 그리 감사하실것까지야. 그동안 권순선님이 kldp운영한다고 애쓰신거에 비하면야... 리처드스톨만이 주창하는 자유소프트웨어 정신이 그런게 아닌가싶어요. 자유롭게 공유하고 베풀지만 그것은 다시 파도타기처럼 번져 자기도 이롭게 되는... kldp의 좋은문서들을 비롯하여 인터넷에 수많이 공개된 '피땀'들로부터 덕을 보아온 저이기에 기꺼이 시간과 노력을 할애할 수 있는것이지요.

작업은 주말에 해볼까 생각중이구요. 일단 몇가지 정확한 '요구분석'이 되어야 헛수고가 줄어들겠죠 ^^

1. 이전 백업자료로 복원되있는 위키문서들의 리스트가 있어야 캐쉬에서 복원되지 못한 문서만 변환하게 될터인데요, http://kldp.org/download/kldpwiki.tar.gz 의 WordIndex가 복원된 리스트인가요? 하긴뭐, 현재의 wiki.kldp.org 의 목록페이지를 긁어서 거기 없는 문서만 복원해도 되겠군요.

2. 현재 복원된 위키의 페이지수가 캐쉬의 페이지수보다 2배쯤 많군요. 캐쉬라서 후반부만 저장되어 있나보군요? 구글검색에 사용되었던 페이지만 캐쉬에 있다면 한번도 검색에 사용되지 않았던 후반부 문서는 없을수도 있겠네요.
방금 대략 kldp홈피의 위키텍스트와, 닥북텍스트, 그리고 구글캐쉬에 있는 html 과 text를 살펴보니 골이 좀 지끈거리기 시작하는군요. ==; 위키텍스트는 캐쉬의 텍스트와 꽤 유사하기도한데(태그가없으므로) 아예 없는것들이 ( {{{,}}} 이런건 아예 없네요) 있어서 캐쉬 텍스트를 가지고 복원하는건 무리일듯싶고, html가지고 할려면 변환테이블이 있어야 할텐데 대충 보니까 ''' ''' 는 <b></b>로 변환된것같고, \n은 </br>머 이런거같은데. 모니위키 개발자이신 박원규님이 윗글에 밝혔듯이 간단한건 간단하지만 적용하기 애매한것도 꽤나 있을것같군요. 더군다나 닥북문서는 위키에서 한번더 변환된 태그들이군요.(툴을 쓴듯) 아예 원 닥북텍스트와 1:1 변환되지 않는 구문들도 꽤 보이는데요. 닥북텍스트에서 <firstname>석문</firstname> <surname>장</surname>이렇게 되는게 구글캐쉬의 html에선 <H3 CLASS="OTHERCREDIT">장석문</H3> 이렇게 되어있군요. 오리지널 텍스트에서 html로 생성한 문서가 html에서 동일한 텍스트로 환원이 되지 않는 부분도 좀 될듯.. 변환툴에서 1,2,3은 4로 변환하라 일케되어있다면 4에서 1,2,3중 어느것으로 복원되야할지 알수가 없으니깐요...
일단, 뭐, 그런류는 나름대로 룰을 정해가면서 가능한한 복원하면 거의 보는데는 지장없을것같은데 문제는 그런 변환테이블의 작성인데요. 그걸 적용해서 어케 바꿔나가는건 코딩의 문제지만 위키문법무엇이 html문법무엇으로 바꼈고, 닥북문법 무엇이 위키문법 무엇으로 바꼈다 뭐 이런 테이블은 박원규님께서 가장 잘 아실것 같은데.. 일단 제가 금요일오전에 wiki2html_table 뭐 이런제목으로 변환테이블문서를 만들어놓고 짬나는데로 소스비교해가면서 테이블을 채워나가면 박원규님께서 핵심적으로 좀 많이 채워주셔야할것 같은데요. 그럼 주말에 제가 코딩을 해볼 요량입니다만... 변환테이블은 꼭 뭐는 뭐다 일케 안되도 뭐뭐 어케되는건 이렇쿵저렇쿵 되야한다 뭐 복잡해도 상관없으니깐..
위키형식 텍스트복원은 그런데로 별문제없을것같은데 닥북문서는 정말 골치거리로 보입니다만.. 박원규님 저건 닥북 html을 다시 닥북문서로 역변환하는 툴이 있을것처럼 보이기도 합니다만... 아님 상세한 테이블이라도 있다면..

권순선의 이미지

Quote:
하긴뭐, 현재의 wiki.kldp.org 의 목록페이지를 긁어서 거기 없는 문서만 복원해도 되겠군요.

예, 이게 가장 좋은 방법일 것 같고요.

docbook 문서는 거의 대부분 기존에 docbook으로 존재하던 것들이고 잘 백업되어 있으며, 새로 docbook으로 올라온 것은 거의 없으므로 변환하지 않으셔도 됩니다. 고로 구글캐쉬에 저장되어 있는 html을 위키텍스트로 저장하도록만 해 주시면 됩니다.

감사합니다....

mr.lee의 이미지

위키에 html2wiki 라고 하는 문서만들었습니다.

위키에 아직 익숙치 않아서 편집이 어렵군요. 특히나, 원래 위키에 사용되는 특수문자들을 나타낼려면 우짜는지.영...

그리고 테이블이 ||내용||내용|| 이렇게 하는거 아니던가요? 왜 프레임이 안보이죠?

많은분들이 변환테이블 작성에 도움을 주시길 바랍니다.

xinick의 이미지

안녕하세요..

여기에 적어도 되는지는 모르겠지만... 용량이 얼마 되지는 않지만..제쪽 서버에서도 어느정도 백업 미러링(?)은 가능 합니다..
도움이 얼마 되지 않겠지만.. 괜찮으시다면 도와드리고 싶습니다.

그럼 복구 하시는대 수고 많이 하셨습니다. :)
다들 감기 조심 하시길.

xinick to slash
재일 풀기 어려운 가닥은 바로 내 마음이다.

kall의 이미지

PackageMgmt 가 필요해서 복구하려고 만든 컨버터 입니다. ;;

현재 테이블 파싱 코드는 없고, 다른 파일로는 안돌려 봤지만
PackageMgmt는 일단 이걸로 복구해서 위키에 넣었습니다.

도움이 될지 모르겠네요...
코드는 무척 지저분 합니다 :oops:

http://kldp.org/download/kldpwiki.tar.gz 을 풀면 나오는 html파일을 변환했습니다.

댓글 첨부 파일: 
첨부파일 크기
Binary Data 0바이트

----
자신을 이길 수 있는자는
무슨짓이든 할수있다..
즉..무서운 넘이란 말이지 ^-_-^
나? 아직 멀었지 ㅠㅠ

권순선의 이미지

xinick wrote:
안녕하세요..

여기에 적어도 되는지는 모르겠지만... 용량이 얼마 되지는 않지만..제쪽 서버에서도 어느정도 백업 미러링(?)은 가능 합니다..
도움이 얼마 되지 않겠지만.. 괜찮으시다면 도와드리고 싶습니다.

그럼 복구 하시는대 수고 많이 하셨습니다. :)
다들 감기 조심 하시길.


감사합니다... 일단은 자체적으로 두 군데에 분산 백업을 실시하고 있고요. 혹 가능하시다면 http://kldp.net/forum/forum.php?forum_id=1997 를 참고하시고 미러링해 주세요...
권순선의 이미지

kall wrote:
PackageMgmt 가 필요해서 복구하려고 만든 컨버터 입니다. ;;

현재 테이블 파싱 코드는 없고, 다른 파일로는 안돌려 봤지만
PackageMgmt는 일단 이걸로 복구해서 위키에 넣었습니다.

도움이 될지 모르겠네요...
코드는 무척 지저분 합니다 :oops:

http://kldp.org/download/kldpwiki.tar.gz 을 풀면 나오는 html파일을 변환했습니다.


감사합니다... 아직 자세히 보지는 않았는데 CodeFest에서 위키 복구할 때 유용하게 사용할 수 있을 것 같네요. :-)
pore70의 이미지

html --->wiki 텍스트로 전환하려면 XSLT 같은 xml 쪽이 어떨까 생각됩니다.
xsl을 작성할 수 있다면 쉽게 해결될 것 같은데요. kldp dockbook 사이트 관리자님과 상의해 보시는 것이 어떨지요. 제가 감히 변환 작업을 하겠다고는 말씀못 드리겠고 xml 쪽에서 하는 게 가장 빠른 방법인 듯하여 글 올립니다.

kldp dockbook 사이트 관리자님이 류광님인가로 알고 있는데.. 한번 문의해 보심이 어떨지..

wkpark의 이미지

kall wrote:
PackageMgmt 가 필요해서 복구하려고 만든 컨버터 입니다. ;;

현재 테이블 파싱 코드는 없고, 다른 파일로는 안돌려 봤지만
PackageMgmt는 일단 이걸로 복구해서 위키에 넣었습니다.

도움이 될지 모르겠네요...
코드는 무척 지저분 합니다 :oops:

http://kldp.org/download/kldpwiki.tar.gz 을 풀면 나오는 html파일을 변환했습니다.

모니위키는 전부터 ImportUrl이라는 액션이 있었습니다.
이것은 일반 HTML페이지를 위키문법으로 변환하는 간단한 기능을 가지고 있었습니다.
이번 KLDP위키 복구 작업은 위키에서 랜더링된 결과(이것은
일반 html보다 복잡합니다만)를 다시 위키로 복구하는 것이므로 이것을
좀 더 손을 보아서...

아직은 완전하지 않지만 현재 CVS 들어있는 importurl은 다음을 처리합니다.
(몇주전 고친 이후로 업데이트는 없습니다
(액션만 다운받아서 모니위키 버전에 상관없이 쓸 수 있습니다)
* 상대 url 및 절대 url 처리
* 이미지의 url, 절대 url 및 상대 url 처리
* <h1><h2>등의 heading 처리
* <pre>블럭 간단한 처리 (선행 space는 지워짐 -_-;;)
* 간단한 테이블 처리
* pre 블럭 보존 (line by line 첨가)
line by line으로 처리하는 부분에서 개선할 여지가 많습니다.

http://wiki.kldp.org/wiki.php/%BA%B9%B1%B8%B5%C8%C6%E4%C0%CC%C1%F6

해야 할 일:
* list 깊이/유형 보존
(위의 두가지만 완료되면 거의 원형에 가깝게 복구할 수 있습니다.)

스크립트 작업을 하려는 경우 다음과 같이 하시면 됩니다:

w3m -dump_source 'http://chemie.skku.ac.kr/wiki/wiki.php?action=importurl&url=변환할url'

전에 제가 자유게시판에 글을 올렸었는데 ^^;; 제가 비교적 상세한 설명을 하지 않았나보군요..

P.S.: 이 글을 쓴 직후에 pre block도 보존하는 기능을 넣고, 글도 수정합니다.

온갖 참된 삶은 만남이다 --Martin Buber

댓글 달기