Dropbox có cơ chế giám sát thư mục Dropbox sao cho có thể phát hiện mọi thay đổi xảy ra ở thư mục này. Một số ứng dụng khác nhận biết các thay đổi này bằng cách định kỳ quét qua thư mục và đối chiếu với bản sao lưu. Rõ ràng cơ chế giám sát thư mục tiện lợi và ít tốn tài nguyên hơn.
Trên RPi cần phải cài gói inotify-tools để có thể giám sát thư mục bằng inotifywait
apt-get install inotify-tools
Thí dụ
1. Treo ứng dụng cho đến khi file abc.txt được tạo ra trong thư mục /tmp
grep -q abc.txt <(inotifywait -e create -m /tmp)
2. Chuyển file sang thư mục khác, ngay khi nó xuất hiện trong thư mục Dropbox
cd ~/Dropbox/myfolder inotifywait -m -q -e CREATE --format %f . | while IFS= read -r file; do cp -p "$file" /path/to/other/directory done
3. Tôi xây dựng hệ thống CCTV như sau:
Các camera gởi videoclip và snapshot về một thư mục con tương ứng của thư mục /mnt/cctv (thí dụ cam_1, cam_2…)
Dùng inotifywait để giám sát thư mục /mnt/cctv, mỗi khi có file mới thì di chuyển sang một thư mục con của box.com (thí dụ cam_1/snapshot.jpg -> cam_1/20150523/snapshot.jpg)
Thư mục box.com được mount bằng davfs nên sau đó file được tự động upload lên box.com.
Việc lưu tạm file ở /mnt/cctv để có thể sắp xếp file theo camera, ngày ghi hình… ở ổ đĩa đám mây box.com và quyết định có báo động hay không khi có file mới
Xem 2 đoạn mã sau
inotifywait -m -r -q -e CREATE --format %w%f /mnt/motion | while read filename; do //xử lý filename ... done
và
while (true); do filename=$(inotifywait -r -q -e CREATE --format %w%f /mnt/motion) //xử lý filename ... done
Đoạn mã thứ hai có vẻ dể đọc hơn nhưng có thể bỏ sót các file được tao ra liên tiếp nếu việc xử lý file tốn nhiều thời gian, trong khi đoạn mã thứ nhất lưu tất cả tên file phát sinh sự kiện create và được đọc ra xử lý tất cả lần lượt.
4. Dùng lệnh man inotifywait để xem tài liệu hướng dẫn sử dụng