inotify 是 Linux 系统中的一个功能,它可以监控文件系统事件,如文件的创建、修改、删除等。通过使用 inotify,我们可以在文件被删除或修改之前采取行动,从而防止文件丢失。以下是如何利用 inotify 防止文件丢失的方法:
首先,你需要安装 inotify-tools,这是一个常用的 inotify 工具集。
sudo apt-get update
sudo apt-get install inotify-tools
inotifywait 是 inotify-tools 中的一个命令行工具,可以用来监控文件系统事件。
inotifywait -m /path/to/your/file -e modify,attrib,close_write,move,create,delete
这个命令会持续监控指定文件的修改、属性变化、关闭写入、移动、创建和删除事件。
如果你想监控一个目录及其子目录中的所有文件,可以使用 -r 选项:
inotifywait -m -r /path/to/your/directory -e modify,attrib,close_write,move,create,delete
你可以编写一个简单的脚本来自动备份被修改或删除的文件。
#!/bin/bash
MONITOR_DIR="/path/to/your/directory"
BACKUP_DIR="/path/to/your/backup"
# 创建备份目录(如果不存在)
mkdir -p "$BACKUP_DIR"
inotifywait -m -r "$MONITOR_DIR" -e modify,attrib,close_write,move,create,delete |
while read -r directory events filename; do
# 构建文件的完整路径
file_path="$directory/$filename"
# 根据事件类型采取行动
case $events in
modify|attrib|close_write)
# 文件被修改或关闭写入,进行备份
cp "$file_path" "$BACKUP_DIR/$(basename "$file_path")"
echo "Backup created for $file_path"
;;
move|create)
# 文件被移动或创建,进行备份
cp "$file_path" "$BACKUP_DIR/$(basename "$file_path")"
echo "Backup created for $file_path"
;;
delete)
# 文件被删除,进行备份(如果文件在备份目录中存在)
if [ -f "$BACKUP_DIR/$(basename "$file_path")" ]; then
cp "$BACKUP_DIR/$(basename "$file_path")" "$BACKUP_DIR/$(basename "$file_path")_deleted"
echo "Deleted file backed up as $(basename "$file_path")_deleted"
fi
;;
esac
done
将上述脚本保存为一个文件,例如 backup_script.sh,然后赋予执行权限并运行:
chmod +x backup_script.sh
./backup_script.sh
通过上述方法,你可以利用 inotify 监控文件系统事件,并在文件被修改、删除或移动时自动进行备份,从而有效防止文件丢失。