레이블이 Linux인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Linux인 게시물을 표시합니다. 모든 게시물 표시

2009년 9월 10일 목요일

[Shell] 날짜로 파일 필터링 하기

쉘에서 작업을 하다보면 파일들을 날짜로 필터링 해야하는 경우가 생긴다.

 

예를 들면, 어떤 날짜와 다른 어떤 날짜 사이에 수정한 파일들만 가지고 와서 따로 백업을 해준다든지,

 

공동으로 작업하는 사람이 오늘 어떤 파일을 수정하였는지 보고 싶다든지 하는 경우가

 

파일을 날짜로 필터링해야 하는 경우이다.

 

 

그럴 때는 편법으로 이런 방법이 있다.

 

$ touch -t 200901010000 file1

$ touch -t 200902010000 file2

$ find / -newer file1 -a ! -newer file2 -ls  > result

 

여기서 이 명령어들을 이해하려면 몇 가지 알고 있어야 하는 것들이 있다.

 

1. touch 명령어
  1) 용도 : 파일의 시간을 원하는 시간으로 생성하거나 수정

  2) -t 옵션 : 수정하고자 하는 시간을 지정하는 옵션. -t 를 쓴 후 뒤에 원하는 시간을 적으면 됨.

 

2. find 명령어

  1) 용도 : 원하는 조건의 파일을 찾음

  2) -newer 옵션 : 옵션 뒤의 파일보다 최근에(이후에) 내용이 수정된 파일을 검색

  3) -a 옵션 : 'and' 연산자와 같은 의미

  4) ! : 'not' 연산자와 같은 의미

 

 

자 그렇다면, 이제 명령어를 이해해보자.

 

1. 첫 번째 줄을 보면 'file1'이라는 파일을 2009년 1월 1일 00시 00분 00초로 생성한다.

 

2. 두 번째 줄을 보면 1번과 마찬가지 방법으로 'file2'이라는 파일을 2009년 2월 1일 00시 00분 00초로 생성한다.

 

3. 세 번째 줄에 대해서 설명하면, find 명령어 다음의 '/'는 전체 범위에서 찾으라는 의미이고, file1이 수정된 시간보다 최근에, file2가 수정된 시간보다는 이전의 파일을 찾으라는 의미의 명령어 문장이다.

 

그러므로, 저 세 명령어 문장으로 수정된 시간이 원하는 범위 내에 있는 파일을 찾을 수 있다.

2009년 8월 19일 수요일

[Linux-CVS-1] CVS 서버 설정

개발 프로젝트 진행 시, 웬만한 프로젝트는 대부분 팀을 이뤄서 하게 된다.

 

그럴 때, 버전 관리가 필수적인데, 필요한 프로그램이 CVS이다.

 

 

CVS의 정의

 

CVS(Current Versions System, 동시 버전 시스템)은 소프트웨어 프로젝트를 진행할 때, 파일로 이뤄진 모든 작업과 변화를 추적해서 여러 개발자가 협력적이고 효율적으로 작업을 할 수 있게 한다. CVS는 GPL(GNU General Public License, GNU 일반 공중 허가서) 하에서 배포되는 오픈 소스 프로그램이다.

 

 

CVS 설치

 

1. CVS 설치 여부 확인

 

$ cvs -v
$ cvs -version

 

위 방법으로 확인이 가능하다. CVS가 설치되어 있다면 버전 정보가 보일 것이다.

설치되어 있지 않다면 CVS를 먼저 설치해야한다.

 

2. CVS 설치

 

CVS는 http://ftp.gnu.org/non-gnu/cvs/binary/stable/x86-linux/RPMS/i386/에서 패키지를 다운받을 수 있다.

 

 

 

CVS 리눅스 계정 추가

 

CVS를 관리할 계정을 생성해야 한다. 계정을 따로 생성하지 않고 관리해도 되지만 따로 계정을 두고 관리하는 것이 관리 차원에서 효율적이다.

 

추가되는 사용자 계정의 홈 디렉토리가 CVS의 저장소가 될 것이다.

 

$ groupadd cvs              - cvs 그룹 추가
$ useradd -g cvs cvs
    - cvs 그룹에 계정 추가
$ passwd cvs                 - cvs 계정 패스워드 설정

 

 

 

CVS 저장소(repository) 설정

 

여러 명이 동시에 작업해야 하므로 공통으로 저장할 장소가 필요하다. 그 장소를 저장소(repository)라고 부르며 CVS의 전반적인 설정 파일, 버전 관리에 관련된 정보, 파일 별 작업 기록 등이 저장된다. 설정 파일 및 작업 기록은 CVS 프로그램이 자동으로 관리하므로 사용자가 건드릴 필요는 전혀 없다.

 

$ cvs -d /home/cvs init


/home/cvs 디렉토리를 CVS 저장소로 초기화한다. -d 옵션은 저장소가 될 디렉토리 경로를 지정하기 위한 옵션이고, 'init'은 저장소를 초기화하기 위한 cvs 명령어이다.

 

명령어 실행 후 /home/cvs 디렉토리를 확인해 보면 'CVSROOT'라는 이름의 디렉토리가 생성되어 있으며 각종 설정 파일이 그 디렉토리 내에 들어있다는 것을 알 수 있다.

 

 

 

CVS 디렉토리 사용 권한 설정

 

설정했던 디렉토리를 cvs 계정이 사용 가능하도록 지정해 준다.

 

$ chown -R cvs:cvs /home/cvs
$ chmod 770 /home/cvs /home/cvs/CVSROOT


 

 

CVS 서비스 설정

 

1. 2041 포트 확인

 

CVS 전용 계정으로 관리하는 경우 클라이언트는 CVS 서버에 pserver 프로토콜을 사용해 접근한다. 이 프로토콜을 사용하려면 몇 가지 준비 사항이 필요하다.

 

우선 pserver 프로토콜이 사용하는 포트가 사용 가능하게 설정되어 있는지 확인한다.

 

$ cat /etc/services | grep 2401


이 명령어의 결과가 출력이 된다면 pserver 프로토콜을 사용할 준비가 되어 있는 것이다.

 

 

2. pserver 환경 파일 작성

 

pserver 프로토콜을 사용하기 위해서는 환경 파일을 작성해야 한다. 슈퍼 데몬인 xinetd를 사용하는 경우 우선 /etc/xinetd.d 디렉토리에 cvspserver 파일이 있는지 확인하고 없으면 파일을 만든다.

 

$ vi /etc/xinetd.d/cvspserver


새 파일로 vi 에디터가 뜨면 다음 내용을 입력한다.

 

service cvspserver
{
     disable = no
     flag = REUSE
     socket_type = stream
     wait = no
     user = root
     server = /usr/bin/cvs
     server_args = -f --allow-root=/home/cvs pserver
     log_on_failure += USERID
}


--allow-root는 cvs 저장소가 /home/cvs 임을 명시하기 위해서 사용된다.

만약에 새로운 프로젝트 project1을 생성하였을 경우, 이 프로젝트는 /home/cvs/project1 디렉토리에 저장된다.

 

cvspserver 파일 편집을 완료했으면 저장 후 xinetd 서비스를 재시작한다.

 

$ service xinetd restart


 

 

CVS 전용 사용자 계정 추가

 

CVS 사용자 계정은 실제로 프로젝트를 진행하는 팀원 개개인의 계정이다. 팀원들은 이 계정을 통해 프로젝트 파일에 접근해서 작업을 수행할 것이다.

 

CVS 계정을 더 쉽게 추가하기 위해 /usr/local/bin 디렉토리에 cvspasswdgen 파일을 생성하고 다음의 내용을 스크립트를 기록한다.

 

$ vi /usr/local/bin/cvspasswdgen

 

#!/usr/bin/perl

 

($u, $p)=@ARGV;

@d=(A..Z,a..z);

$s=$d[rand(52)].$d[rand(52)];

print $u.":".crypt($p, $s).":cvs\n"


이어서 cvspasswdgen 파일에 대해 다음과 같이 실행 권한을 부여한다.

 

$ chmod 755 /usr/local/bin/cvspasswdgen

 

이제 다음과 같은 명령어로 CVS 전용 사용자 계정을 추가할 수 있다. cvspasswdgen 명령어의 첫 번째 파라미터는 사용자 계정 이름이고, 두 번째 파라미터는 해당 계정의 패스워드이다.

 

$ cd /home/cvs/CVSROOT
$ cvspasswdgen cvsuser1 cvsuser1_passwd >> passwd


위 명령어를 입력하면 passwd 파일에 계정 정보가 입력될 것이다. 이제 이클립스와 같은 IDE에서 CVS 전용 계정을 통해 접속하면 된다.

 

다음 번에는 프로젝트 초기화에 대해서 정리해 봐야지.

 

참고 : [강좌] Linux 에서 CVS 서버 세팅하기.