两台Linux要实现文件夹备份功能,源机器文件夹中文件的新增修改删除操作,要同步到备份机。
两台机器10.0.0.1;10.0.0.2,1机器为主机,2机器为备份机
在备份机2机器中执行创建用户、配置密码
- useradd filesync
-
- passwd filesync
在1机器中链接2机器
- ssh filesync@10.0.0.2
-
- ssh-keygen -t rsa
-
- ssh-copy-id filesync@10.0.0.2
在1机器中安装inotify工具,用来监控文件变动,需要借助epel安装
- yum install -y epel-release
-
- yum --enablerepo=epel install inotify-tools
-
- # 安装完成使用inotifywait -h测试
- # inotifywait -h
一般情况下linux自带rsync
rsync -h
1机器中有文件夹/home/filesync
2机器也创建一个文件夹/home/filesync
1机器创建一个sh脚本,用来执行同步
- touch /home/filesync.sh
-
- chmod +777 /home/filesync.sh
编辑脚本内容
- #!/bin/bash
- src=/home/filesync
- inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,move,close_write,delete,create,attrib $src | while read file
- do
- rsync -vzrtopg --delete --progress $src filesync@10.0.0.2:/home/
-
- echo " ${file} was rsynced" >>/home/filesync.log 2>&1
- done
执行脚本
nohup /home/filesync.sh > /home/filesync.out 2>&1 &
现在应该可以实现同步了。
注意事项
2机器中的备份文件的权限组应该设置文filesync这个用户,否则可能出现因为没有权限,造成同步失败的情况
2机器的文件夹加权限组
chown -R filesync:filesync /home/filesync/