rsync远程同步
上行:客户端同步到服务器
下行:服务端同步到客户端
类似scp
开源的快速备份的工具,一般是系统自带的
可以再不同主机之间同步整个目录树(目录)
在远程同步的任务中,负责发起rsync的发起端,也就是服务端,负责响应的同步请求的,就是客户端。
rsync的特点
1、支持拷贝文件,链接文件等等
2、可以同步整个目录
3、可以支持保留源文件或者目录的权限等等
4、可以实现增量同步
同步方式
1、完整备份
2、增量备份
常用的一些选项
1、-a:归档模式,保留权限
2、-v:可以显示同步的详细过程
3、-z:压缩,在传输的过程中对文件进行压缩。
4、-H:同步硬链接
5、-delete:同步删除文件
6、-l:同步连接文件
7、-r:递归,所有。
实验
etc/rsyncd
修改配置文件
创建一个模块用于连接
uid = root
gid = root
use chroot = yes
address = 20.0.0.16
#监听地址
port = 873
# max connections = 4
pid file = /var/run/rsyncd.pid
log file = /var/log.rsyncd.log
hosts allow = 20.0.0.0/24
#允许访问的客户端IP地址
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
[test]
path = /opt/test
read only = no
auth users = backuper
secrets file = /etc/rsyncd_users.db
创建密码文件 添加用户和密码
vim /etc/rsyncd_users.db
对密码文件赋权600 只能是600 不然报错
创建用户模块
查看端口 没启动就重启服务 在查看端口即可
在服务端创建文件
客户端 即可传输文件
rsync -avz backuper@20.0.0.16::test /opt
客户端做免密登录
将密码文件写在前面
先创建密码文件并赋权
echo "123456" > /etc/server.pass
chmod 600 /etc/server.pass
rsync -avz --password-file=/etc/server.pass backuper@20.0.0.16::test /opt
保证同步 可可在客户端通过定时任务指向
30 2 * * * /usr/bin/rsync -az --password-file=/etc/server.pass backuper@20.0.0.16::test /opt
客户端同步到服务端
安装inotify-tools
inotify实现监控
inotify watch:监控文件系统的变化
inotify wait:监控修改 创建、移动、删除、属性修改(权限修改、所有者、所在组)
先解压
yum -y install make
进到目录
给予四核
make -j 4 install
创建目录
客户端双开
分身
inotifywait -mrq -e modify,create,move,delete,attrib /opt/xy102
这条命令会持续监控 /opt/xy102 目录及其子目录中所有文件和目录的修改、创建、移动、删除和属性变化事件。
m:持续监控
r:递归整个目录 只要有变化
q:简化输出的信息
e:指定监控的时间
sttrib:属性修改
下行同步
在客户端写一个脚本
–delete全同步(两边的内容完全一致)
保证两个目录有相同的文件不相同的都删除掉
vim inotify.sh
#!/bin/bash
inotify_cmd="inotifywait -mrq -e modify,create,move,delete,attrib /opt/xy102"
rsync_cmd="rsync -avH --delete --password-file=/etc/server.pass /opt/xy102 backuper@20.0.0.16::test/"
#前面的是源工作目录 #这是目标的工作目录
$inotify_cmd | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ]
then
$rsync_cmd
fi
done
赋权 执行
下行同步