inotify+rsync数据实时同步备份

发布于 2024年05月27日

inotify+rsync数据实时同步备份

安装 inotify

sudo apt-get install inotify-tools rsync  # Debian/Ubuntu
sudo yum install inotify-tools rsync      # CentOS/RedHat

同步脚本

#!/bin/bash
#host=192.168
src=/tmp/dir1/
dst=/tmp/dir2/
log_file=/tmp/rsync_client.log
aoaorealtimesync(){
/usr/bin/inotifywait -mr --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src | while read event file
do
        echo "Detected $event on $file, starting rsync..."
        /usr/bin/rsync -auvrtzopgP --delete --progress ${src} ${dst}
#        /usr/bin/rsync -auvrtzopgP --delete --progress ${src} ${host}:${dst}
done
}
aoaorealtimesync >> ${log_file} 2>&1 &
~

其它备注

chmod755 rsync.sh chmod +x rsync.sh
echo "/tmp/rsync.sh" >> /etc/rc.local

选项和参数详细说明

-m:持续监控模式(monitor mode)。使用这个选项,inotifywait 将不会在第一个事件后退出,而是会持续监控指定目录中的事件。这对于需要实时监控的场景非常重要。

-r:递归模式(recursive mode)。使用这个选项,inotifywait 将递归监控指定目录及其所有子目录中的事件。这在监控包含子目录的目录时非常有用。

-e modify -e create -e delete -e move:指定要监控的事件类型。每个 -e 选项后跟一个事件类型,表示监控以下事件:

modify:文件内容被修改。
create:文件或目录被创建。
delete:文件或目录被删除。
move:文件或目录被移动或重命名。
时间格式:--timefmt 和 --format 选项指定了事件输出的格式,包括事件发生的时间、目录、文件名和事件类型。
/usr/bin/rsync:这是 rsync 命令的完整路径。rsync 是一个快速、通用的文件复制工具,特别适用于在本地和远程主机之间进行数据同步。

-a:归档模式(archive mode)。该选项是一个组合选项,相当于 -rlptgoD,它保留符号链接、权限、时间戳、组、所有者和设备文件。

-u:更新模式(update mode)。仅在源文件比目标文件新或目标文件不存在的情况下进行同步。

-v:详细模式(verbose)。显示详细的同步过程信息。

-r:递归模式(recursive)。递归地传输目录及其内容。

-t:保持文件时间(times)。保持文件的修改时间。

-z:压缩文件数据(compress)。在传输时压缩文件数据,以减少传输的数据量。

-o:保持文件所有者(owner)。保持文件的所有者信息(需要超级用户权限)。

-p:保持文件权限(perms)。保持文件的权限信息。

-g:保持文件组(group)。保持文件的组信息。

-P:进度显示(partial and progress)。显示同步过程中的进度信息,并允许恢复部分传输的文件。

--delete:删除目标目录中在源目录中已删除的文件。确保目标目录与源目录完全同步。

--progress:显示传输过程中的进度信息。

${src}:源目录的路径。这个变量表示你希望同步的本地目录。

${host}:远程主机的地址。这是一个变量,表示目标主机的地址或主机名。

${src}:在目标主机上的路径。通常与源目录路径相同,以确保目录结构一致。



评论