[질문] 신규/변경 파일 목록을 만드는 스크립트를 짜려고 합니다

김일영의 이미지

서버 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입니다

ymir의 이미지

새로 만드는 것도 좋겠지만, 이왕이면 검증된 공개툴들을 찾아서 써보는것도 좋을 것 같네요..

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

사실 그래서 파일 사이즈를 가지고 바이너리 여부를 단정하고자 하는 것이고요.
조언 주셔서 감사합니다.

ymir의 이미지

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 파일을 만들어 쓰면 되겠군여...

음... 제 스크립트 실력으로 이것도 쉽진 않겠지만...
일단 열심히 해보겠습니다~!

고맙습니다~

pcharley의 이미지

rsync 명령을 활용해도 되지 않을가 싶네요...
실제 작업은 하지 않고 목록만 출력하게 할 수 있는 걸로 알고 있습니다.
이렇게 출력해서 원하는 서브 동작을 perl, awk 등을 이용해서 다시짜면
좀 수월해 보일듯합니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.