① rsync启动命令:rsync --daemon
② rsync关闭命令:kill $(cat /var/run/rsyncd.pid)
同步本地文件系统数据:rsync [选项] 源位置 目标位置
例如:
#同步本机的fstab文件到/opt目录
rsync /etc/fstab /opt
#同步本地的grub目录到/opt目录
rsync -rl /boot/grub /opt
#如果想要在/opt目录下也创建一个/boot目录,则命令为:
rsync -R rl /boot/grub /opt
下行同步的两种方式(使用客户端将rsync服务器下载的wwwroot共享模块下的内容同步到本地的/opt目录下(共享模块下的真实共享路径需要对other用户具有读取 +r 的权限
① 命令格式: 用户名@主机地址::共享模块名,例如:
② 命令格式:rync://用户名@主机地址/共享模块名,例如:
rsync通过ssh的方式同步
命令与scp命令类似
例如:将本地/opt/test.txt上传到目标服务器/opt目录:
rsync -avz /opt/test.txt [email protected]:/opt
例如:将目标服务器/opt/test2.txt文件下载到本地/opt目录:
rsync -avz [email protected]:/opt/test2.txt /opt
[root@master ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="aaedeee1-b47c-42b0-93be-b7dc40e486e3"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.226.128
NETMASK=255.255.255.0
GATEWAY=192.168.226.2
DNS1=8.8.8.8
#slave节点IP地址修改为192.168.226.132
[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@master ~]# setenforce 0
[root@master ~]# sed -i "7s/enforcing/disabled/" /etc/selinux/config
SELINUX=disabled
[root@master ~]# cd /etc/yum.repos.d
[root@master yum.repos.d]# mkdir backup
[root@master yum.repos.d]# mv * backup/
mv: cannot move ‘backup’ to a subdirectory of itself, ‘backup/backup’
[root@master yum.repos.d]# ls
backup
[root@master yum.repos.d]# vim local.repo
[mnt]
name=mnt
baseurl=file:///mnt
gpgcheck=0
enbaled=1
------》wq
[root@master yum.repos.d]# vi /etc/fstab
/dev/cdrom /mnt iso9660 defaults 0 0
[root@master yum.repos.d]# reboot
[root@master yum.repos.d]# yum clean all
[root@master yum.repos.d]# yum makecache
[root@master yum.repos.d]# yum install httpd rsync -y
[root@master yum.repos.d]# vi /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = yes #限制root用户(禁锢在源目录)
address = 192.168.226.128 #监听地址
port 873 #端口号
log file = /var/log/rsyncd.log #日志文件位置
pid file = /var/run/rsyncd.pid #pid(运行进程号)文件存放位置
hosts allow = 192.168.226.132 #允许访问的客户端地址(可设置为网段:192.168.226.0/24)
[wwwroot] #共享模块名称
path = /var/www/html #源目录的工作路径
comment = Document Root of www.51xit.top
read only =yes #开启只读功能
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z #同步时不在压缩的文件类型
auth users = slave #授权账户
secrets file = /etc/rsyncd_users.db #存放账户信息的数据文件
-----》wq
#创建存放账户信息的数据文件
[root@master etc]# vim /etc/rsyncd_users.db
#使用 “用户:密码”的记录形式,每行一个用户记录独立的账户数据,不依赖于系统账号
slave:slave123
#给与权限(root用户读写的权限)
[root@master etc]# chmod 600 /etc/rsyncd_users.db
#查看下源目录的文件权限
[root@master etc]# ll -ld /var/www/html
drwxr-xr-x. 2 root root 6 Aug 4 2017 /var/www/html
[root@master etc]# rsync --daemon
[root@master etc]# netstat -natp | grep rsync
tcp 0 0 192.168.226.128:873 0.0.0.0:* LISTEN 44119/rsync
[root@master etc]# cd /var/www/html
[root@master html]# touch aaa.html bbb.html
[root@master html]# ls
aaa.html bbb.html
[root@master html]# echo "aaa.web" >> aaa.html
[root@master html]# echo "bbb.web" >> bbb.html
[root@master html]# cat aaa.html
aaa.web
[root@master html]# cat bbb.html
bbb.web
[root@slave yum.repos.d]# yum -y install rsync
[root@slave yum.repos.d]# cd /opt
[root@slave opt]# ls
rh
#将本机的/etc/fstab文件同步到本机/opt下
[root@slave opt]# rsync /etc/fstab /opt
[root@slave opt]# ls
fstab rh
#将本机的/boot/grub目录同步到本机/opt下
[root@slave opt]# rsync -rl /boot/grub /opt
[root@slave opt]# ls
fstab grub rh
[root@slave opt]# mkdir myweb
#方式一:
[root@slave opt]# rsync -avzH --delete [email protected]::wwwroot /opt/myweb
Password:
receiving incremental file list
./
aaa.html
bbb.html
sent 99 bytes received 231 bytes 31.43 bytes/sec
total size is 16 speedup is 0.05
[root@slave opt]# ls /opt/myweb/
aaa.html bbb.html
[root@slave opt]# cat /opt/myweb/aaa.html
aaa.web
#方式二:
[root@slave opt]# rsync -avz rsync://[email protected]/wwwroot /root
Password:
receiving incremental file list
./
aaa.html
bbb.html
sent 99 bytes received 231 bytes 73.33 bytes/sec
total size is 16 speedup is 0.05
[root@slave opt]# ls /root
aaa.html bbb.html 下载 图片 桌面 视频
anaconda-ks.cfg initial-setup-ks.cfg 公共 文档 模板 音乐
[root@slave opt]# vim /etc/server.pass
slave123
#密码文件目录指定我们刚刚创建的密码文件,可以实现免密交互[root@slave opt]# rsync -az --delete --password-file=/etc/server.pass [email protected]::wwwroot /opt/myweb
[root@slave opt]# ls myweb/
aaa.html bbb.html
[root@master html]# vim /etc/rsyncd.conf
#关闭只读
read only = no
#关闭rsync服务
[root@master html]# kill `cat /var/run/rsyncd.pid`
[root@master html]# netstat -natp | grep rsync
#开启服务
[root@master html]# rsync --daemon
[root@master html]# netstat -natp | grep rsync
tcp 0 0 192.168.226.128:873 0.0.0.0:* LISTEN 73382/rsync
[root@master html]# chmod 777 /var/www/html
#客户机同步的/opt/myweb也需要给与777权限
root@slave opt]# chmod 777 myweb
#查看监控队列大小
[root@master html]# cat /proc/sys/fs/inotify/max_queued_events
16384
#查看最多监控实例数
[root@master html]# cat /proc/sys/fs/inotify/max_user_instances
128
#每个实例最多监控文件数
[root@master html]# cat /proc/sys/fs/inotify/max_user_watches
8192
#调整inotify内核参数
[root@master html]# vim /etc/sysctl.conf
[root@master html]# sysctl -p
fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
[root@slave ~]# tar zxvf inotify-tools-3.14.tar.gz -C /opt
[root@slave ~]# cd /opt/inotify-tools-3.14/
[root@slave inotify-tools-3.14]# ls
aclocal.m4 config.h.in COPYING libinotifytools man src
AUTHORS config.sub depcomp ltmain.sh missing
ChangeLog configure INSTALL Makefile.am NEWS
config.guess configure.ac install-sh Makefile.in README
[root@slave inotify-tools-3.14]# yum install gcc gcc-c++ -y
[root@slave inotify-tools-3.14]# ./configure
[root@slave inotify-tools-3.14]# make && make install
#inotifywait 用于持续监控,实时输出结果
#inotifywatch 用于短期监控,任务完成后再出结果
[root@slave ~]# inotifywait -mrq -e modify,create,move,delete /opt/myweb
#我们可以在客户机上/opt/myweb创建一个文件,然后查看监控信息
[root@slave ~]# vim ccc.html
ccc web
此时可以查看到监控信息中会生成创建ccc.html的操作
[root@slave inotify-tools-3.14]# vim /opt/inotify.sh
[root@slave inotify-tools-3.14]# cat /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/myweb/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/myweb/ [email protected]::wwwroot"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ] ; then
$RSYNC_CMD
# echo "${FILE} was rsynced" >>/opt/inotify_rsync.log
fi
done
----->wq
[root@slave inotify-tools-3.14]# cd /opt/
[root@slave opt]# chmod +x inotify.sh
#开启脚本,持续监控
[root@slave opt]# ./inotify.sh
#客户机服务器
[root@slave myweb]# vim ddd.html
[root@slave myweb]# cat ddd.html
ddd web
#源服务器
[root@localhost html]# ll
total 16
-rw-r--r--. 1 root root 8 Mar 27 19:54 aaa.html
-rw-------. 1 nobody nobody 8 Mar 27 20:34 bbb.html
-rw-------. 1 nobody nobody 8 Mar 27 20:34 ccc.html
-rw-------. 1 nobody nobody 8 Mar 27 20:34 ddd.html
[root@localhost html]# cat ddd.html
ddd web
#同步成功