콘텐츠로 이동

컴파일 및 설치

서버에서 다음 작업을 수행합니다. 환경에 따라 종속성이 없는 일부 패키지가 누락될 수 있습니다. dnf -y install autoconf automake libtool을 사용하여 설치합니다.

[root@Rocky ~]# wget -c https://github.com/inotify-tools/inotify-tools/archive/refs/tags/3.21.9.6.tar.gz
[root@Rocky ~]# tar -zvxf 3.21.9.6.tar.gz -C /usr/local/src/
[root@Rocky ~]# cd /usr/local/src/inotify-tools-3.21.9.6/
[root@Rocky /usr/local/src/inotify-tools-3.21.9.6]# ./autogen.sh && \
./configure --prefix=/usr/local/inotify-tools && \
make && \
make install
...
[root@Rocky ~]# ls /usr/local/inotify-tools/bin/
inotifywait inotifywatch

환경 변수 PATH를 추가하고, 이를 구성 파일에 작성하여 영구적으로 적용하세요.

[root@Rocky ~]# vim /etc/profile
...
PATH=$PATH:/usr/local/inotify-tools/bin/
[root@Rocky ~]# . /etc/profile

왜 EPEL 저장소의 inotify-tools RPM 패키지를 사용하지 않을까요? 그리고 소스 코드를 사용하여 컴파일하고 설치하는 방법은 무엇인가요?

저자는 원격 데이터 전송은 효율성의 문제라고 생각합니다. 특히 생산 환경에서는 동기화해야 할 파일이 많고, 특정 파일이 특히 큰 경우입니다. 또한 새로운 버전에서는 버그 수정과 기능 확장이 있을 수 있으며, 새로운 버전의 전송 효율성이 더 높을 수도 있습니다. 따라서 저는 inotify-tools를 소스 코드로 설치하는 것을 추천합니다. 물론 이것은 저자의 개인적인 제안이며, 모든 사용자가 반드시 따라야 하는 것은 아닙니다.

커널 매개변수 조정

프로덕션 환경의 필요에 따라 커널 매개변수를 조정할 수 있습니다. 기본적으로 /proc/sys/fs/inotity/에는 세 개의 파일이 있습니다.

[root@Rocky ~]# cd /proc/sys/fs/inotify/
[root@Rocky /proc/sys/fs/inotify]# cat max_queued_events ;cat max_user_instances ;cat max_user_watches
16384
128
28014
  • max_queued_events-maximum monitor queue size, default 16384
  • max_user_instances-the maximum number of monitoring instances, the default is 128
  • max_user_watches-the maximum number of files monitored per instance, the default is 8192

일부 매개변수 및 값을 /etc/sysctl.conf에 작성합니다. 예는 다음과 같습니다. 그런 다음 sysctl -p를 사용하여 파일을 적용하세요.

fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576

관련 명령

inotify-tools 도구에는 다음과 같은 두 가지 명령이 있습니다. * inotifywait-지속적인 모니터링, 실시간으로 결과를 출력합니다. 주로 rsync 점진적 백업 도구와 함께 사용됩니다. 파일 시스템 모니터링이기 때문에 스크립트와 함께 사용할 수 있습니다. 특정 스크립트 작성 방법은 나중에 소개하겠습니다. * inotifywatch-단기간 모니터링, 작업이 완료된 후 결과를 출력합니다.

inotifywait은 주로 다음 옵션을 사용합니다.

-m 지속적인 모니터링을 의미합니다. -r 재귀적인 모니터링을 의미합니다. -q 출력 정보를 간소화합니다. -e 모니터링 데이터의 이벤트 유형을 지정하며, 여러 이벤트 유형은 영어 상태로 쉼표로 구분됩니다.

이벤트 유형은 다음과 같습니다.

이벤트 유형 설명
access 파일 또는 디렉토리 내용에 접근
modify 파일 또는 디렉토리의 내용이 수정됨
attrib 파일 또는 디렉토리의 속성이 수정됨
close_write 파일 또는 디렉토리가 쓰기 모드로 열린 후 닫힘
close_nowrite 파일 또는 디렉토리가 읽기 전용 모드로 열린 후 닫힘
close 읽기 / 쓰기 모드에 관계없이 파일 또는 디렉터리가 닫힘
open 파일 또는 디렉토리가 열림
moved_to 감시 중인 디렉토리로 파일 또는 디렉토리가 이동됨
moved_from 감시 중인 디렉토리에서 파일 또는 디렉토리가 이동됨
move 감시 중인 디렉토리로 파일 또는 디렉토리가 이동하거나 삭제됨
move_self 감시 중인 파일 또는 디렉토리가 이동됨
create 감시 중인 디렉토리에 파일 또는 디렉토리가 생성됨
delete 감시 중인 디렉토리의 파일 또는 디렉토리가 삭제됨
delete_self 감시 중인 디렉토리 내에서 삭제 된 파일 또는 디렉토리
unmount 마운트 해제된 파일 시스템의 파일 또는 디렉토리

예시 : [root@Rocky ~]# inotifywait -mrq -e create,delete /rsync/

inotifywait 명령 시범

첫 번째 터미널 pts/0에서 명령어를 입력하고 Enter를 누르면 창이 잠겨있는 것을 확인할 수 있습니다.

[root@Rocky ~]# inotifywait -mrq -e create,delete /rsync/

두 번째 터미널 pts/1에서 /rsync/ 디렉토리로 이동하여 파일을 생성합니다.

[root@Rocky ~]# cd /rsync/
[root@Rocky /rsync]# touch inotify

다시 첫 번째 터미널 pts/0으로 돌아가서 출력 정보는 다음과 같습니다.

[root@Rocky ~]# inotifywait -mrq -e create,delete /rsync/
/rsync/ CREATE inotify

inotifywaitrsync의 조합

Rocky Linux 8 서버에서 작업을 수행하며 SSH 프로토콜을 사용하여 데모를 진행합니다.

SSH 프로토콜의 비밀번호 없는 인증 로그인은 여기서 설명하지 않는 rsync 비밀번호 없는 인증 로그인을 참조하십시오. 아래는 bash 스크립트 내용 예시입니다. 필요에 따라 명령어 뒤에 다른 옵션을 추가하여 필요한 요구 사항을 충족시킬 수 있습니다. 예를 들어 rsync 명령어 뒤에 --delete를 추가할 수도 있습니다.

#!/bin/bash
a="/usr/local/inotify-tools/bin/inotifywait -mrq -e modify,move,create,delete /rsync/"
b="/usr/bin/rsync -avz /rsync/* testfedora@192.168.100.5:/home/testfedora/"
$a | while read directory event file
    do
        $b &>> /tmp/rsync.log
    done
[root@Rocky ~]# chmod +x rsync_inotify.sh
[root@Rocky ~]# bash /root/rsync_inotify.sh &

데이터 동기화 전송에 SSH 프로토콜을 사용하는 경우 대상 컴퓨터의 SSH 서비스 포트가 22가 아닌 경우에는 다음과 유사한 방법을 사용할 수 있습니다.—— b="/usr/bin/rsync -avz -e 'ssh -p [port-number]' /rsync/* testfedora@192.168.100.5:/home/testfedora/"

If you want to start this script at boot [root@Rocky ~]# echo "bash /root/rsync_inotify.sh &" >> /etc/rc.local [root@Rocky ~]# chmod +x /etc/rc.local

rsync 프로토콜을 사용하여 동기화하는 경우 대상 컴퓨터의 rsync 서비스를 구성해야 합니다. 자세한 내용은 rsync 데모 02, rsync 구성 파일, rsync 무료 비밀 인증 로그인을 참조하십시오.

Author: tianci li

Contributors: Steven Spencer