[질문] 신규/변경 파일 목록을 만드는 스크립트를 짜려고 합니다
글쓴이: 김일영 / 작성시간: 화, 2007/11/13 - 11:44오전
서버 A와 B가 있는데,
A는 여러가지 설치/설정 작업을 많이 했고 (아쉽게도 이력이 관리가 안됨)
B는 그걸 이제 참조해서 적용하려고 합니다.
디렉토리를 걍 비교하는 것은
http://kldp.org/node/85860
에서 도움을 받아 일전에 잘 활용했었으나
문제는 서버 A와 B에는 실행파일(바이너리)들도 많기 때문에
일일이 파일을 diff로 비교할 수가 없다는 것입니다. (허걱~)
그래서 생각해낸게 다음과 같습니다.
1) 파일명이 없던게 있으면 'add' file명
2) 파일명이 있던게 없어졌으면 'delete' file명
3) 파일명이 같으면
3-1) 사이즈가 일정 크기 이상이면 바이너리
3-1-1) 바이너리는 사이즈가 서로 다르면 'modify' file명
3-2) 사이즈가 일정 크기 미만이면 텍스트 파일
3-2-1) 텍스트 파일이면 diff 실행 결과
이런 식으로 출력 파일이 나오게 돌리고 싶습니다.
그런데 막상 해 보려니 스크립트에 대한 지식이 택도 없네요...
ls 로 임시 파일을 만들어 awk 로 처리를 하려고 해봤는데
막상 만들어보니 제 능력으론 계속 닭질만... 하 세월 입니다 T.T
고수님들의 도움 간절히 청합니다.
p.s) 참, 플랫폼은 유감스럽게도 Linux는 아니고 HP-UX입니다
Forums:
Tripwire 를 써보시는게..?
새로 만드는 것도 좋겠지만, 이왕이면 검증된 공개툴들을 찾아서 써보는것도 좋을 것 같네요..
md5sum 이나 cksum 으로 검사 시점별로 체크섬을 떠 놓고..
diff 로 비교해 보는건 어떠실런지? (diff 는 이미 보셨으니..^^)
지난번 목록 파일과 diff 로 비교했을 때 파일이 변경되었다면, 체크섬이 변경되었겠죠..?
$ find . -type f | xargs -- md5sum
ff5ce79ab177359681f294a7adbd20b5 ./tcsh
b545631ae63b2e815b032ae9fc4c4ed4 ./doxyfilter.pl
ade7253a4cd2472eb0d51a282998d9a3 ./doxygen.sh
ecdc10d717b66db100285fb85f12c15e ./mysql.server
64cb209872095a3dbf18d932a18212b8 ./trac.server
$ find . -type f | xargs -- cksum
3896321585 294996 ./tcsh
1422075061 1775 ./doxyfilter.pl
2326208910 5744 ./doxygen.sh
437970329 11240 ./mysql.server
2951454390 107 ./trac.server
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
파일 수가 너무 많습니다...
답글 감사합니다만,
파일 수가 너무 많고 크기도 큽니다.
비교를 해야 하는 대상은 사실상 서버 A, B의 모든 파일이나 다름 없습니다.
체크섬을 만들기엔 갯수와 크기가... T.T
사실 그래서 파일 사이즈를 가지고 바이너리 여부를 단정하고자 하는 것이고요.
조언 주셔서 감사합니다.
그렇다면...
size 로 비교하는 것 보다는, file 명령을 사용해서 type 을 구분하시는게 나을 것 같네요..
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
고맙습니다.
HP-UX도 file 명령이 있긴 하네요. (리눅스만 있는건줄 알았는데...)
문제는 이 결과를 다시 스크립트에서 처리할 수 있게 Text와 바이너리로만 구분을 하게 하는건데...
/etc/magic 파일을 고쳐서 그렇게 magic 파일을 만들어 쓰면 되겠군여...
음... 제 스크립트 실력으로 이것도 쉽진 않겠지만...
일단 열심히 해보겠습니다~!
고맙습니다~
rsync
rsync 명령을 활용해도 되지 않을가 싶네요...
실제 작업은 하지 않고 목록만 출력하게 할 수 있는 걸로 알고 있습니다.
이렇게 출력해서 원하는 서브 동작을 perl, awk 등을 이용해서 다시짜면
좀 수월해 보일듯합니다.
댓글 달기