728x90
안녕하세요.
오늘은 inotifywait를 활용해 특정 디렉토리를 감시해 새로운 파일이 생성되거나 이동/복사된 경우 새로운 이벤트를 발생시키는 간단한 Bash 스크립트를 작성해보도록 하겠습니다.
inotifywait란?
리눅스에서 파일 시스템의 변경 사항을 실시간으로 감지하기 위한 명령어로, 기본으로 제공되는 명령어는 아닙니다. inotifywait는 inotify-tools 패키지의 일부로 특정 파일이나 디렉토리의 이벤트를 모니터링하여 작업을 수행할 수 있게 해주는 명령어입니다.
inotifywait 설치방법
inotifywait는 inotify-tools 패키지에 포함되어 있으며, Debian 기반 시스템에서는 다음 명령어로 설치할 수 있습니다
sudo apt-get update
sudo apt-get install inotify-tools
inotifywait 사용방법
inotifywait의 기본 구문은 다음과 같습니다
inotifywait [옵션] [파일 또는 디렉토리]
주요 옵션은 다음과 같습니다.
-e, --event
감지할 이벤트 지정 (예: create, delete, modify 등)
-r, --recursive
하위 디렉토리의 이벤트도 감지
-m, --monitor
백그라운드에서 실행하며, Ctrl+C로 중지하기 전까지 계속 실행
--timeout
이벤트가 발생하기까지 대기할 시간 지정
--format
출력 형식 지정
실제 사용중인 스크립트
특정 디렉토리를 감시하여 새로운 파일이 생성되면 Rclone을 통해 연결된 "my-drive"에 파일을 이동시킵니다. 복사가 완료되면 해당 파일을 삭제하는 스크립트입니다.
#!/bin/bash
# 감시할 폴더
watch_dir="/path/to/watch_folder"
# 파일을 이동할 폴더
dest_dir="/path/to/destination_folder"
inotifywait -m -e create "$watch_dir" | while read dir action file; do
rclone copy "$watch_dir/$file" my-drive: --progress --create-empty-src-dirs --fast-list --retries 3 --transfers 4 --multi-thread-streams 4 -vv
rm -rf "$watch_dir/$file"
done
마치며
자동화된 스크립트는 항상 확인해야 하는 습관을 들이시는게 좋습니다. 스크립트를 그대로 사용하시진 않겠지만 응용하신다면 꼭 Log를 통해 확인을 하시기 바랍니다.
감사합니다.
inotify기다려
728x90
'Development > Shell' 카테고리의 다른 글
[Linux/Shell] 프로세스가 실행중인지 확인하고 다시 프로세스 실행하기 (0) | 2024.06.17 |
---|