본문 바로가기

리눅스 리뷰

리눅스 파일 시스템 모니터링 도구: inotify-tools 설치 및 사용법

728x90

리눅스 시스템 운영이나 개발 시 특정 디렉토리의 파일 변화를 실시간으로 감지해야 할 때가 있습니다. 이때 가장 효율적으로 사용할 수 있는 도구가 바로 inotify-tools입니다.


1. inotify-tools란?

inotify-tools는 리눅스 커널의 inotify 서브시스템을 사용하여 파일 시스템의 이벤트를 감시하는 명령줄 도구 모음입니다. 파일을 계속해서 스캔(Polling)하는 방식이 아니라, 커널이 발생시키는 이벤트를 가로채는 방식이기 때문에 시스템 리소스를 적게 소모하면서도 즉각적인 반응이 가능합니다.


2. 저장소 추가 및 설치 방법

inotify-tools는 배포판에 따라 외부 저장소 활성화가 필요할 수 있습니다.

(1) RHEL / CentOS / Rocky Linux 계열

해당 계열의 기본 저장소에는 패키지가 포함되어 있지 않습니다. 따라서 EPEL(Extra Packages for Enterprise Linux) 저장소를 먼저 설치해야 합니다.

Bash
 
# 1. EPEL 저장소 패키지 설치
sudo dnf install epel-release -y

# 2. 저장소 메타데이터 갱신
sudo dnf makecache

# 3. inotify-tools 설치
sudo dnf install inotify-tools -y

(2) Ubuntu / Debian 계열

우분투 등 데비안 계열은 기본 저장소에서 제공하므로 바로 설치가 가능합니다.

Bash
 
sudo apt update
sudo apt install inotify-tools -y

3. 주요 명령어 및 사용법

inotify-tools를 설치하면 핵심적으로 inotifywait와 inotifywatch 두 가지 명령어를 사용할 수 있습니다.

(1) inotifywait

파일 시스템의 변화를 실시간으로 모니터링하고 화면에 출력합니다. 쉘 스크립트와 연동하여 자동화 작업을 수행할 때 주로 사용됩니다.

기본 실행 예시:

Bash
 
# 특정 디렉토리(/var/www/html)의 변화를 실시간 감시
inotifywait -m /var/www/html

주요 옵션:

  • -m (monitor): 이벤트 발생 후 종료하지 않고 계속 대기합니다.
  • -r (recursive): 하위 디렉토리까지 모두 감시합니다.
  • -e (event): 특정 이벤트만 지정하여 감시합니다. (modify, create, delete, move 등)
  • --timefmt: 로그에 출력될 시간 형식을 지정합니다.
  • --format: 출력 결과의 포맷을 사용자 정의합니다.

(2) inotifywatch

지정된 기간 동안 발생한 파일 시스템 이벤트에 대한 통계 정보를 수집하여 요약 리포트를 제공합니다.

실행 예시:

Bash
 
# 60초 동안 해당 디렉토리의 이벤트를 수집하여 통계 출력
inotifywatch -v -t 60 -r /home/user/data

4. 감시 가능한 주요 이벤트

이벤트 이름 설명
access 파일을 읽었을 때 발생
modify 파일 내용이 수정되었을 때 발생
attrib 파일 속성(권한, 소유자 등)이 변경되었을 때 발생
close_write 쓰기 모드로 열린 파일이 닫혔을 때 발생 (저장 완료 시점)
create 파일이나 디렉토리가 새로 생성되었을 때 발생
delete 파일이나 디렉토리가 삭제되었을 때 발생
move 파일이 이동(이름 변경 포함)되었을 때 발생

5. 활용 사례: 자동 백업 스크립트 예시

아래 스크립트는 특정 폴더에 파일이 생성되거나 수정될 때마다 자동으로 다른 경로로 복사하는 예시입니다.

Bash
 
#!/bin/bash

WATCH_DIR="/home/user/source"
BACKUP_DIR="/home/user/backup"

inotifywait -m -r -e close_write,moved_to --format '%w%f' "$WATCH_DIR" | while read NEW_FILE
do
    cp "$NEW_FILE" "$BACKUP_DIR"
    echo "File $NEW_FILE backed up at $(date)"
done

6. 결론

inotify-tools는 단순한 모니터링을 넘어 서버의 보안 감시, 로그 분석, 실시간 데이터 동기화 등 다양한 분야에서 활용될 수 있는 강력한 도구입니다. 저장소 추가 과정만 기억한다면 어떤 환경에서도 쉽게 구축하여 사용할 수 있습니다.

반응형