文章目录
rsync远程同步
rsync服务器
Rsync介绍
rsync是一筐开源的、快速的(相对)、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行该表原有数据的属性信息,实现数据的备份迁移特性。
rsync软件适用于unix/linux/windows等多种操作系统平台
rsync是一个快速和非常方便给的文件复制工具。他能本地复制,远程复制,或者远程守护进程方式复制,它提供了大量的参数来控制其行为的各个方面,并且允许非常灵活的方式来实现文件的传输复制
以其delta-transfer算法闻名
rsync监听端口:873
rsync运行模式:C/S
同步方式
1.全量备份
2.原有的数据全部传送
3.把原来的文件和新的文件一起统一传送
4.全量复制,效率低
增量备份
在传输数据之前通过一些算法通过你有的数据和我有的数据进行对比,把不一样的数据通过网络传输增量复制,效率高
rsync命令
格式:
rsync [选项] 原始位置 目标位置
常用选项 | 说明 |
---|---|
-r | 递归模式,包含目录及子目录中的所有文件 |
-l | 对于符号链接文件任然复制为符号链接文件 |
-v | 显示同步过程的详细信息 |
-z | 在传输文件时进行压缩 |
-a | 归档模式,递归并保留对象属性 ,等同于-rlptgoD |
-p | 保留文件的权限标记 |
-t | 保留文件的时间标记 |
-g | 保留文件的属组标记(仅超级用户使用) |
-o | 保留文件的属主标记(仅超级用户使用) |
-H | 保留硬链接文件 |
-A | 保留ACL属性信息 |
-D | 保留设备文件及其他特殊文件 |
- -delete | 删除目标位置有而原始位置没有的文件 |
- -checksum | 根据对象的校验和来决定是否跳过文件 |
常用 -a -v -z
本地复制
rsync -avz /abc /opt
rsync -avz /abc/ /opt/
区别
[root@localhost ~]# cd /opt/
[root@localhost opt]# mkdir /abc
[root@localhost opt]# cd /abc/
[root@localhost abc]# ls
[root@localhost abc]# touch 1.txt 2.txt
[root@localhost abc]# ls
1.txt 2.txt
[root@localhost abc]# cd /
[root@localhost /]# rsync -avz /abc /opt/
[root@localhost opt]# rm -rf abc/
[root@localhost opt]# cd -
/
[root@localhost /]# rsync -avz /abc/ /opt/
配置源的两种表示方法
格式一:
用户名@主机地址::共享模块名
例:
rsync -avz backuper@192.168.254.200::wwwroot /root
#backuper指的是用户身份
#wwwroot代表的是这个模块
格式二:
rsync://用户名@主机地址/共享模块名
例:
rsync -avz rsync://backuper@192.168.254.200/wwwroot /root
#类似URL的方式传输
#URL:具体的位置点
#URI:标识的是拥有同一特性或类型的一个集合
inotify简介
可以监控文件系统的变动情况,并作出通知响应
-
调整inotify内核参数(优化)
-
/etc/sysctl.conf(内核参数配置文件)
max_queue_events #监控事件队列大小 max_user_instances #最多监控实例数 max_user_watches #每个实例最多监控文件数
-
inotifywait:用于持续监控,实时输出结果
-
inotifywatch:用于短期监控,任务完成后再输出结果
例:
inotifywait -mrq -e modify,create,move,delete /var/www/html
-m | 持续进行监控 |
---|---|
-r | 递归监控所有子对象 |
-q | 简化输出信息 |
-e | 指定要监控哪些事件类型 |
modify | 修改 |
create | 创建 |
move | 移动 |
delete | 删除 |
配置rsync下行同步(远程复制)
环境配置
主机 | 操作系统 | IP地址 | 软件 / 安装包 / 工具 |
---|---|---|---|
Master | CentOS7 | 192.168.254.10 | rsync |
Slave | CentOS7 | 192.168.254.20 | rsync / inotify-tools-3.14.tar.gz |
下行同步:将master服务器数据备份到slave服务器
1.master(192.168.254.10)
systemctl stop firewalld.service
setenforce 0
yum -y install httpd rsync
vim /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = yes
address = 192.168.254.10
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.254.0/24
[wwwroot]
path = /var/www/html
comment = Document Root of www.lic.com
read only = yes
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z
auth users = rui
secrets file = /etc/rsyncd_users.db
vim /etc/rsyncd_users.db
rui:123123
chmod 600 /etc/rsyncd_users.db
rsync --daemon
netstat -natp | grep rsync
cd /var/www/html
touch aaa.html bbb.html
ls
2.slave(192.168.254.20)
systemctl stop firewalld.service
setenforce 0
yum -y install rsync
cd /opt
mkdir hhh
chmod 777 hhh
vim /etc/server.pass
123123
chmod 600 /etc/server.pass
rsync -az --delete --password-file=/etc/server.pass rui@192.168.254.10::wwwroot /opt/hhh
ls hhh
rsync+inotify实时同步
1.master(192.168.254.10)
vim /etc/rsyncd.conf
read only = no
kill `cat /var/run/rsyncd.pid`
netstat -natp | grep rsync
rsync --daemon
netstat -natp | grep rsync
chmod 777 /var/www/html
2.slave(192.168.254.20)
cat /proc/sys/fs/inotify/max_queued_events
cat /proc/sys/fs/inotify/max_user_instances
cat /proc/sys/fs/inotify/max_user_watches
vim /etc/sysctl.conf
fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
sysctl -p
yum -y install gcc gcc-c++
#放入安装包
tar zxvf inotify-tools-3.14.tar.gz -C /opt
cd /opt/inotify-tools-3.14/
./configure
make && make install
vim /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/hhh/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/hhh/ rui@192.168.254.10::wwwroot"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ] ; then
$RSYNC_CMD
fi
done
cd /opt/
chmod +x inotify.sh
./inotify.sh &
cd /opt/haha
touch ccc.html
rm -rf aaa.html
master(192.168.254.10)上验证
cd /var/www/html
ls
此处报错是因为我们以匿名用户身份登陆的
更改uid和gid可以避免报错
vim /etc/rsync.conf
slave(192.168.254.20)
master(192.168.254.10)
.end