나는 그것을 사용하고 있다이노티파이 도구디렉터리의 파일이 수정되었는지 여부를 모니터링하려면 다음을 수행하세요.
while inotifywait -e modify /etc/checking/; do
curl...
done
그럼에도 불구하고 modify
감시 중인 파일이나 감시 디렉터리의 파일을 주의하시기 바랍니다.에 쓰여졌다, 작성된 내용이 동일한지 여부에 관계없이.
새 파일을 보내기 전에 curl
이전에 본 파일의 내용이 실제로 변경되었는지 확인하고 싶습니다.
md5sum
악용하는 명령을 사용할 생각입니다 .
md5sum
따라서 각 파일의 출력을 배열에 저장 해야 합니다 . 어떤 아이디어가 있나요?- 이벤트가 발생 하면
modify
이전 이벤트와md5sum
비교
나는 그것을 사용하고 있다#!/usr/bin/env sh
어떤 아이디어가 있나요?
답변1
/etc/checking
특정 디렉터리( )의 모든 파일을 재귀적으로 체크섬하고 해당 파일에 체크섬 코드를 쓸 수 있습니다 . 그런 다음 수정 사항을 검색하려면 목록을 실행하여 비교하면 됩니다.
find /etc/checking -type f -exec md5sum {} \; > checklist.chk
checklist.chk는 다음과 같습니다.
bda7d4479b770eb055287d265b62c056 /etc/checklist/file001
83087902bc3bfea5cf8594c7d3f5c350 /etc/checklist/file002
7af7a423d53450e75fc228d6163ae9e6 /etc/checklist/file003
그런 다음 이를 매니페스트와 비교합니다.
md5sum -c checklist.chk
다음과 같이 출력됩니다.
/etc/checklist/file001: OK
/etc/checklist/file002: OK
/etc/checklist/file003: OK
예를 들어 cronjob에 쉽게 추가하여 매일 실행할 수 있습니다.
동일한 명령을 사용하여 매번 새 매니페스트를 출력하고 실행할 수도 있습니다.차이점두 목록 사이의 명령.
답변2
내가 만든다디렉토리 지문이 문제를 해결하는 데 사용할 수 있습니다. 디렉터리 트리의 모든 파일에 대한 지문/체크섬을 생성하고 이를 파일에 저장하며 지문이 변경되었는지도 알려줍니다.
다음을 사용하여 설치할 수 있습니다.
$ brew install nejckorasa/tap/dir-fingerprint
다음과 같이 사용됩니다.
$ dir-fingerprint <path_to_directory>
출력:
Old [8a7b73f9671004edd50500bc7d3f1837d841a5c086011207259eb2d183823adf]
New [8a7b73f9671004edd50500bc7d3f1837d841a5c086011207259eb2d183823adf]
@ <path_to_directory>/.fingerprint
Diff false
.fingerprint
파일을 생성 하고
답변3
git
루프 처럼 버전 제어를 사용하는 것은 어떻습니까 ? 모든 변경 사항을 모니터링하고 출력을 사용하여 데이터를 구문 분석할 수 있습니다 git status --porcelain
. 여기서 데이터 수정인지 새 파일인지 확인할 수 있으며 내용이 실제로 변경되지 않았는지 표시하지 않습니다. 예:
$ git init
$ echo "aa" > file1
$ git add file1
$ git commit -m "initial"
$ echo "bb" > file2
$ echo "aa" > file1
$ git status --porcelain
산출:
?? file2
단점은 inotify
실제 파일 시스템과 밀접하게 연결되어 있는 반면 git은 훨씬 더 높은 수준(따라서 오버헤드)이라는 것입니다.