inotify 是 Linux 内核提供的一种文件系统事件监控机制,它可以实时监控文件或目录的变化,如创建、删除、修改等。在 Debian 上使用 inotify 进行备份通常涉及以下几个步骤:
安装必要的软件:
你需要安装 inotify-tools,这是一个提供了 inotifywait 和 inotifywatch 命令的工具集,用于监控文件系统事件。
sudo apt-get update
sudo apt-get install inotify-tools
编写备份脚本:
使用 inotifywait 命令编写一个脚本来监控文件或目录的变化,并在检测到变化时执行备份操作。以下是一个简单的示例脚本:
#!/bin/bash
# 监控的源目录和目标备份目录
SOURCE_DIR="/path/to/source"
BACKUP_DIR="/path/to/backup"
# 创建备份目录(如果不存在)
mkdir -p "$BACKUP_DIR"
# 使用 inotifywait 监控源目录
inotifywait -m -r -e create,delete,modify --format '%w%f' "$SOURCE_DIR" | while read FILE
do
# 获取当前时间戳
TIMESTAMP=$(date +"%Y%m%d%H%M%S")
# 构建备份文件的路径
BACKUP_FILE="$BACKUP_DIR/backup-$TIMESTAMP.tar.gz"
# 执行备份操作
tar -czf "$BACKUP_FILE" -C "$SOURCE_DIR" .
echo "Backup completed: $BACKUP_FILE"
done
将上述脚本保存为 backup.sh,并赋予执行权限:
chmod +x backup.sh
运行备份脚本: 在终端中运行备份脚本:
./backup.sh
脚本将开始监控指定的源目录,并在检测到文件变化时自动执行备份操作。
后台运行(可选):
如果你想让备份脚本在后台持续运行,可以使用 nohup 命令或将其放入系统服务中。
使用 nohup:
nohup ./backup.sh &
将脚本放入系统服务(例如 systemd)中,可以创建一个服务文件 /etc/systemd/system/backup.service:
[Unit]
Description=Filesystem Backup Service
After=network.target
[Service]
ExecStart=/path/to/backup.sh
Restart=always
User=your_username
[Install]
WantedBy=multi-user.target
然后启用并启动服务:
sudo systemctl enable backup.service
sudo systemctl start backup.service
通过以上步骤,你可以在 Debian 上使用 inotify 实现文件系统的实时备份。