CVS 서버가 날라갔습니다. 하드복구한 후 해야 되는 작업이 궁금

sexymiru의 이미지

KLDP에서 계속 눈팅만 해서 많은 정보를 얻어가고 있는 유령회원입니다.

오늘에서야 첫 로그인과 글을 남기게 되네요.

한 2주전에 전원공사로 인한 잦은 정전으로 CVS서버가 부팅이 안되고 파일손상이 우려되는 사태가 발생했었습니다. 결과는 시스템구조 손상....

부랴부랴 업체에 문의해서 home디렉터리와 usr디렉터리만 일단 집중적으로 복구하여 거의 모든 파일이 복구되었습니다.

그래서 월요일부터 새로운 리눅스 서버를 구매한 뒤 새 하드에다가 이 복구 데이터를 옮기려고 시도하고 있는데, 디렉터리 구조가 제가 생각했던것과는 완전 다르군요.

예전 CVS서버를 담당하던 분은 이에 관련된 인수인계서도 없이 퇴사한 상황이어서 CVS에 대해서는 전혀 문외한인 제가 복구 작업을 전담하고 있습니다.

혹시 동일한 일을 겪으셨던 분이나 이와 관련된 참고문서를 보유하고 있으신 분이 있으실까 해서 도움을 부탁드립니다.

날씨가 점점 추워지는데 회원 여러분 모두 건강 조심하세요 ^^

송지석의 이미지

cvs가 pserver로 구동되었다면, /etc/xinetd.d/cvspserver 파일을 살펴보시기 바랍니다.
거기에 --allow-root 옵션 다음에 경로가 적혀있는데 그것이 그 서버에서 관리하던 리포지토리입니다. (여러개 있을 수 있습니다)
/etc/ 디렉토리가 날아갔다면, 기존에 작업하던 소스들의 CVS 디렉토리 안에 Root를 열어서 읽어보시면 경로가 나옵니다.

그걸(그 디렉토리 전체를) 그대로 복사하시면 됩니다. cp -a 인가요? 퍼미션까지 같게 복사하시면 일단 cvs 리포지토리는 됐고요 그 다음은 cvspserver 파일을 만드셔서 xinetd.d에 등록하시면 됩니다.
나머지는 kldp wiki나 질답란을 검색해보시면 될 겁니다.

sexymiru의 이미지

말씀하신대로 해보니 희망의 빛이 보입니다. 답변 정말 감사합니다 ^^

이제 남은건 CVS서버 설정만 남았군요 ^^

zelon의 이미지

으음... 전 제가 넘겨받은 백업이 제대로 되나 테스트용으로 다른 서버에 옮겨봤었습니다.

윗 분이 말씀하신대로 하면 되구요. 단, -p 옵션으로 옮길 때, 제가 잘못해서 그런지 퍼미션이 복사되는게 아니라, uid, gid 가 그대로 복사되더군요. 그래서 새로 옮긴 서버의 cvsuser 의 uid, gid 가 기존의 서버랑 다르다면 checkout 이 안되는 문제가 생길 수 있습니다.

복사하신 후 다시 권한 확인하는 거 잊지 마세요 ^^

아... 참고로 pserver 는 보안에 취약하니, 거의 모든 유저들이 read/write 권한을 가지고 있다면, ssh 를 이용하시길 권해드립니다. read/write 권한이 다른 분에게만 pserver... 물론 둘다 동시에도 사용가능하니 참고하세요.

-----------------------------------------------------------------------
GPL 오픈소스 윈도우용 이미지 뷰어 ZViewer - http://zviewer.wimy.com
블로그 : http://blog.wimy.com

송지석의 이미지

zelon wrote:
아... 참고로 pserver 는 보안에 취약하니, 거의 모든 유저들이 read/write 권한을 가지고 있다면, ssh 를 이용하시길 권해드립니다. read/write 권한이 다른 분에게만 pserver... 물론 둘다 동시에도 사용가능하니 참고하세요.

저는 이 의견에 동의하지는 않습니다. 개발자들이 전부 유닉스 프로그래머라면 또는 유닉스에 익숙하고 ssh를 자주 쓰는 사람이면 모르지만, 그렇지 않은 경우가 대부분이라고 봅니다.
일례로 저희 회사는 임베디드쪽인데 다들 윈도우에서 개발합니다. 그래서 cvs 자체를 모르고, '불편한' vi와 '복잡한' cvs 명령에 거부감을 느낍니다.
그래서 제가 한 것은 TortoiseCVS를 사용하게 세미나를 하고 pserver 계정을 만들어주었습니다. 사내 메일 id와 같게 말이죠.
여차하면 로그 메시지 같은 것을 사내메일 계정으로 메일을 날려줄 수 있습니다.
pserver는 회사내-방화벽 안쪽-에서는 편리한 솔루션인 것 같습니다. 모든 사용자에게 ssh 계정을 열어주지 않아도 되고, 사용할 때 ssh 접속을 해 놓거나 ssh agent를 띄우지 않아도 되니까 거부감이 없습니다.
외부에서도 작업하게 하고 싶으면 ssh계정을 열거나 포트 포워딩을 통해 pserver를 이용하게 해야 하겠죠. 함부로 pserver 포트를 열수는 없으니까요. 저는 포트 포워딩을 하기 위한 putty 세팅 레지스트리를 메일로 돌리고 외부에서 쓰고싶으면 이걸로 접속해서 써라 고 했습니다.
zelon의 이미지

아... ssh 로 직접 타이핑하라는 건 아니었습니다. 설마요 ^^;; 저도 직접 cvs 를 건드리지 않습니다. CUI 로는 checkout 도 못합니다. ;;

단, ssh 프로토콜을 지원해주는 편리한 cvs 클라이언트가 있는 걸로 알고 있습니다. 저희 회사 같은 경우는 eclipse 를 cvs 클라이언트로 쓰고 있는데 GUI 로 ssh 를 통한 cvs 접근을 지원해줍니다^^ 물론 프로그래밍은 java 가 아니라 .NET Studio 를 통한 C++ 프로그래밍입니다.

eclipse 를 까는데, java 를 깔아야 하고, eclipse 자체가 조금 느리긴 하지만, cvs 작업을 할 때만 사용하고, 강력한 diff/merge 기능 때문에 충분히 감수할만하더군요.

-----------------------------------------------------------------------
GPL 오픈소스 윈도우용 이미지 뷰어 ZViewer - http://zviewer.wimy.com
블로그 : http://blog.wimy.com

송지석의 이미지

아 네, 제 글의 후반부를 보시면 아시려나 모르겠지만 전 ssh 계정을 사용자 각자에게 주는 것이 불필요, 또는 불편하다는 뜻도 있었습니다. 제가 표현을 잘 못했네요.
개발자가 많아질 수록 ssh 계정도 늘어나게 되는데 이것의 관리가 쉽지 않고, 보안상으로도 안좋다고 생각하거든요. 단순히 소스코드 관리만이 목적인 사람들에게 cvs 서버에 접속해서 쉘을 쓸 수 있는 권한을 주는 것이 좀 껄끄럽죠. 사용자들이 비밀번호를 잘 보관하고, 충분히 복잡하게 사용하는 것도 보장할 수 없고(주 1)..(pserver야 암호가 뚫려도 그 리포지토리의 소스에 파장이 국한되지만 ssh 계정이 뚫리면 더 위험하잖아요) 그러므로 굳이 ssh 계정을 주지 않아도 되는 방화벽 내부의 사용자들은 pserver로 충분하다고 생각했지요.
뭐 이것과 관계된 논쟁을 한다면 별로 중요치도 않은 일인데 플레임이 될 가능성이 있으니 제 의견이 정도다 라고 고수하진 않으렵니다. :-) 아무튼 제 호불호는 이런 이유가 있습니다.

주 1 : 제 생각엔 사용자들에게 비밀번호를 어딘가 적어두지 않고, 또 복잡하게 쓰라고 하는 것은 어떤 면에서 보면 매우 어려운 요구입니다. 사람이 사용하는 계정이 그 계정 하나가 아닌데, 게다가 충분히 복잡한 암호들을 만들어서 기억해두는 게 쉽진 않습니다.

zelon의 이미지

아.... 공감합니다. cvs 만을 위한 user 를 만드는데, 리눅스 유저를 만드는 셈이 되는게 문제군요. ^^ 계정이 많아지면 아무래도 관리가 힘드니까요.

저희 회사는 프로그래머가 몇명 안되고, cvs 만을 위한 서버가 따로 있고, 내부 네트웍이 아니므로 라고 핑계를 ;;

-----------------------------------------------------------------------
GPL 오픈소스 윈도우용 이미지 뷰어 ZViewer - http://zviewer.wimy.com
블로그 : http://blog.wimy.com

atie의 이미지

딴길로 새서, 사내에 F/W내이면 vpn이 있을테고 윈도우즈 상에서면 외부에서 pptp로 네트웍에 접속한 후, pserver 하는 편이 편하지 않을까요?

----
I paint objects as I think them, not as I see them.
atie's minipage

LispM의 이미지

zelon wrote:
아.... 공감합니다. cvs 만을 위한 user 를 만드는데, 리눅스 유저를 만드는 셈이 되는게 문제군요. ^^ 계정이 많아지면 아무래도 관리가 힘드니까요.

저희 회사는 프로그래머가 몇명 안되고, cvs 만을 위한 서버가 따로 있고, 내부 네트웍이 아니므로 라고 핑계를 ;;

하나의 공동 개발 계정을 만들면 됩니다. 단, 이런 경우 코드는 모두가 공유하고 특정인이 소유하지 않는 형태가 되어야 합니다.

생각나서 더 추가합니다. 소스코드를 회사의 중요한 자산이라고 생각하는 회사라면 아마 ssh쪽을 더 선호할 것이고, 그렇지 않은 회사라면 pserver를 사용하리라고 봅니다(컴퓨터 몇대 해킹당하는 것과 source repository 크랙당하는 것은 하늘과 땅 차이입니다. 제대로 된 회사라면 컴퓨터 몇대 크랙 당한 것은 2-3시간이내에 예전의 개발환경과 동일한 환경으로 만들 수 있지만, source repository 크랙당하고 백업이 없다면 회사문 닫아야 합니다. 위험의 정도가 하늘과 땅 차이입니다) . 실제로 (소위 '선진'이라고 불리우는) 어떤 회사들은 개발자라 하더라도 아무나 source repository에 접근하지 못하도록 하는 경우가 많습니다(이런 회사는 source repository에 대한 관리, sw release에 대한 관리, test group과 dev group 사이와의 release 조절 등의 역할을 수행하는 팀이 따로 있습니다).

불편한 것은 피해갈 방법이 거의 항상 있지만, 보안에 대한 타협은 그걸로 끝입니다.

http://lisp.or.kr http://lisp.kldp.org - 한국 리습 사용자 모임

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.