[완료] 스크립트로 파일생성을 감지하는 트릭에 대해서 생각하고 있습니다

s_jeho의 이미지

원격서버에서 생성된 로그파일을 로컬 서버에 받아와 축적하는 스크립트를 만들고 있습니다,
다행히 로그의 파일명이 날짜와 시간의 조합패턴으로 생성되기때문에, ex)20100818_0530.txt
scp를 사용하여 현재시간과 와일드카드를 조합해서 다운로드 받고있습니다.

filename='date +%G%m%d_%H*`
scp user@server:/$filename .

그러나 여기에는 문제가 있는데,

1) scp를 이용하여 와일드카드로(*) 로 받다보니 중복된 파일을 계속 다시 받아오는 문제가 발생
2) 로컬서버의 date를 사용하여 날짜와 시간의 조합패턴을 생성하다보니, 만에하나 로컬 시스템의 시간이 흔들리면 오동작이 우려됨
3) 로그파일의 생성패턴의 정책이 바뀌면(= 파일명의 패턴이 바뀌면) 그때마다 스크립트를 수정해주어야 함

상기와 같은 문제가 있기때문에 다른방식으로 접근해보려고 합니다.
특정 디렉토리의 파일의 변동 (생성/삭제/변경)이 발생하면 추적할수 있을까요?

처음에 생각하기로는 ls등으로 파일의 리스트를 주기적으로 생성하여, 리스트관리를 해나가야 할것처럼 생각되었습니다만
혹여 다른 방법이 있는지, 이와 관련한 구글링해야 할 키워드가 있는지 궁금합니다(무어라 검색해야할지 잘 몰라서 그런지 찾아봤는데 잘 안나오더군요ㅠㅠ)

매우 중요한 서비스가 돌아가는 시스템이라, 시스템의 환경을 건드려서 작업하는것을 제외하고 생각하기때문에
현재 열려있는 서비스... ssh나 ftp 만을 활용하여 작업하려고 생각하고 있습니다.
사용할수있는 스크립트환경은 펄5 과 bash 쉘이 있습니다.

rsync는 현재 설치되지 않은것같고, sourceforge에 등록된 perl 을 이용한 ftpsync가 있어서 시도해봤습니다만,
디버그로 추적이 안되는 문제가 발생해 접어놓았습니다.(리스팅 생성이 제대로 안되서 항상 파일이 0개로 나오더군요)

어찌어찌해서 현재는 bash의 쉘스크립트를 이용해, 로그파일 생성패턴을 바로 받아오는 방식을 하고있습니다만,
좀더 완성도를 높이고싶어서 욕심을 내게 되었습니다.

감사합니다..

queryman의 이미지

훔.. 비슷하게 모니터링 스크립트를 만들어 이용하고 있는데요..

저런 방식이면 find 명령어로 생성되거나 수정된지 몇시간 안된 파일만 가져오게 하는방법도 좋은것 같아요..

저는 백업 서버에다가 모니터링툴도 같이 썼더니.. 약 30대 정도만 모니터링 등록해놔도.. cpu가 항상 거의 full 이네요 -ㅁ-;;

ssh batch 모드로 쓰는데 ㅠ

-------------------------------------------------------------------------------------------
이놈의 IT 생활... 실증나고 짜증나고...
근데 왜 맨날 it관련 소식만 보고 ;;; 님휘


-------------------------------------------------------------------------------------------
이놈의 IT 생활... 실증나고 짜증나고...
근데 왜 맨날 it관련 소식만 보고 ;;; 님휘

s_jeho의 이미지

수정시간을 기점으로 새로운 파일을 감지하는방법이 있군요!!
생각못한방법이었는데, 좋은방법인것같습니다~~

그러나 한가지 걱정되는것은, 만약 감지하는 PC가 일정시간 이상 꺼져있어 수정된지 "몇시간" 안된 파일을 비껴가면 문제가 될것같습니다,ㅜㅜ

s_jeho의 이미지

펄로 감지하는 방법이 있었네요, 한번 시간날때 어떤식으로 동작하는지 소스를 뜯어봐야겠습니다...

JEEN의 이미지

여차저차 블로그 리퍼러에 들어가 있길래 와봤습니다.

결론은 Inotify 입니다.

리눅스 커널 2.6.12 부터 들어간 걸로 알고 있습니다. 그 아래라면 dnotify 같은 게 있는 걸로 아는데.. 안써봐서 잘 모르겠습니다.

------
use perl;

use perl;

s_jeho의 이미지

직접 작성해주신분의 친절하신 댓글이..^^;
그래서 찾아봤더니 이런게 나오네요!!

inotify
From Wikipedia,

inotify is a Linux kernel subsystem that acts to extend filesystems to notice changes to the filesystem, and report those changes to applications.
It replaces an earlier facility, dnotify, which had similar goals.

오오~~....
감사합니다~^^

s_jeho의 이미지

CPAN 에서 제대로 Linux::Inotify 가 설치가 안되네요,
열심히 깔고 테스트하다가 튕겨버린다는...

깜빡했는데, 이 시스템은 솔라리스2.9 이며...특정목표를 위한 시스템이라 그런지
gcc는 커녕 cc도 안보입니다,
(생각해보니 이 이유때문에 스크립트를 고집했네요)

OMG

그래도 다른 비슷한것을 시도하시는 분들에게 많은 도움이 되었으면 좋겠습니다,
저는 저 나름대로 다른 방법을 찾아봐야겠네요, 아주 원시적인 방법으로 리스트관리라던가..ㅠㅠ

답변주셔서 감사합니다!

다콘의 이미지

inotify는 리눅스 커널에서 지원하는 기능입니다.
rsync over ssh를 고려해보세요.
http://oreilly.com/pub/h/38

==========================================
http://star4u.org
http://mirror.star4u.org

s_jeho의 이미지

펄의 기본모듈에서 inotfy 를 발견하지못해서 추가설치해야하는줄 알고있었어요..^^;;;ㅎㅎ
(그런데 뭐가 문젠지 CPAN에서 제대로 설치가 안되더군요ㅠㅠ)

커널단에서 지원된다면 bash 스크립트에서도 이용할수 있겠네요!

그런데 말씀해주신 rsync over ssh 로 시도해봤는데, 정말 깔끔하게되어서 현재는 그것을 사용중입니다,
솔라리스9 이라 어떻게 해야할지 몰랐는데, sunfreeware 에서 바이너리로 구할수 있었어요

조언감사합니다~!

댓글 달기

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