[go] 파일 경로에서 파일 시스템 변경 사항 감지하기
파일이나 디렉토리가 변경될 때 이를 감지하고 처리하는 것은 많은 애플리케이션에서 필요한 기능입니다. Go 언어에서는 파일 시스템의 변경 사항을 감지하는 방법을 제공합니다.
이 포스트에서는 Go 언어를 사용하여 파일 경로에서 파일 시스템 변경 사항을 감지하는 방법을 알아보겠습니다.
inotify를 사용한 파일 시스템 변경 감지
Linux에서 파일 시스템 변경 사항을 감지하기 위해 inotify를 사용할 수 있습니다. Go 언어에서는 golang.org/x/exp/inotify
패키지를 사용하여 inotify를 활용할 수 있습니다.
import (
"golang.org/x/exp/inotify"
"log"
)
func main() {
watcher, err := inotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
defer watcher.Close()
err = watcher.Watch("/path/to/directory")
if err != nil {
log.Fatal(err)
}
for {
select {
case event := <-watcher.Event:
log.Println("Event:", event)
case err := <-watcher.Error:
log.Println("Error:", err)
}
}
}
이 코드는 inotify를 사용하여 지정된 디렉토리에서 변경 사항을 감지하는 간단한 예제입니다.
fsnotify를 사용한 파일 시스템 변경 감지
또 다른 옵션으로는 fsnotify
패키지를 사용하는 것입니다. fsnotify
는 파일 시스템 변경 사항을 감지하는 인터페이스를 제공합니다.
import (
"github.com/fsnotify/fsnotify"
"log"
)
func main() {
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatal(err)
}
defer watcher.Close()
err = watcher.Add("/path/to/directory")
if err != nil {
log.Fatal(err)
}
for {
select {
case event, ok := <-watcher.Events:
if !ok {
return
}
log.Println("Event:", event)
case err, ok := <-watcher.Errors:
if !ok {
return
}
log.Println("Error:", err)
}
}
}
위 코드는 fsnotify
패키지를 사용하여 파일 시스템 변경을 감지하는 간단한 예제입니다.
결론
이러한 방법을 사용하여 Go 언어에서 파일 시스템 변경을 감지하고 적절히 처리할 수 있습니다. 애플리케이션의 필요에 따라 적절한 방법을 선택하여 파일 변경 이벤트를 안정적으로 처리할 수 있습니다.
이러한 기능을 사용하면 파일 시스템 변경에 신속하게 대응할 수 있고, 실시간으로 파일 시스템 변경 사항을 모니터링할 수 있습니다.