inotify
是 Linux 系統中的一個內核子系統,它可以監控文件系統事件,如文件的創建、修改、刪除等。rsync
是一個用于在本地和遠程之間同步文件的工具。將 inotify
與 rsync
配合使用,可以實現實時的文件同步。
以下是一個簡單的示例,展示如何使用 inotifywait
(inotify
的一個命令行工具)和 rsync
配合實現實時同步:
inotify-tools
包,它包含了 inotifywait
命令。在基于 Debian 的系統上,可以使用以下命令安裝:sudo apt-get install inotify-tools
在基于 RHEL 的系統上,可以使用以下命令安裝:
sudo yum install inotify-tools
sync.sh
的 shell 腳本,并添加以下內容:#!/bin/bash
# 源目錄和目標目錄
src_dir="/path/to/source/directory"
dest_dir="/path/to/destination/directory"
# 使用 inotifywait 監控源目錄中的文件變化
inotifywait -m -r -e create,modify,delete --format '%w%f' "${src_dir}" | while read file
do
# 當檢測到文件變化時,使用 rsync 同步文件
rsync -avz --delete "${src_dir}/" "${dest_dir}"
done
請將 /path/to/source/directory
和 /path/to/destination/directory
替換為實際的源目錄和目標目錄。
sync.sh
腳本添加可執行權限:chmod +x sync.sh
sync.sh
腳本:./sync.sh
現在,每當源目錄中的文件發生變化時,inotifywait
會檢測到這些變化,并觸發 rsync
同步文件到目標目錄。
注意:這個示例僅用于演示目的,實際使用中可能需要根據需求進行調整。例如,可以考慮將 rsync
命令放入后臺運行,以避免阻塞 inotifywait
。此外,還可以考慮使用更高級的工具,如 rsyncd
或第三方實時同步工具(如 Unison 或 Syncthing)。