Rsync(Remote Rynchronization)概念: 一款优秀的、快速的、多功能的本地或远程数据镜像同步备份工具。使用于unix/linux/windows等多种平台。作用:rsync具有可使本地主机不同分区或目录之间及本地和远程两台主机之间的数据快速同步镜像,远程备份等功能。提示:传统的cp,scp工具拷贝每次均为完整拷贝,而rsync除了完整拷贝,还具备增量拷贝的功能,因此,从性能及效率上更胜一筹。
Rsync的特性
* 支持拷贝特殊文件如链接,设备等。
* 可以有排除指定文件或目录同步的功能,相当于打包命令tar.
* 可以做到保持原来文件或目录的权限、时间、软硬链接等所有属性均不改变。
* 可实现增量同步,既只同步发生变化的数据,因此数据传输效率很高。
* 可以使用rcp,rsh,ssh等方式来配合传输文件,也可以通过直接的socket连接。
* 支持匿名的或认证的进程模式传输,方便进行数据备份及镜像。
rsync的工作方式
* 主机本地间的数据传输数据(此时类似于cp命令的功能)
* 借助rcp,ssh等传输数据(此时类似于scp命令的功能)
* 以守护进程(socket)的方式传输数据(这个是rsync的重要的功能)
本地数据传输模式语法: rsync [option] 源 目的
例1:将hosts文件拷贝到/optxiarsync /etc/hosts /opt/
例2:将opt目录拷贝到mnt目录下
rsync -avz /opt /mnt ————cp -ap /opt /mnt
通过远程shell进行数据传输语法分为两种分别是
拉取 pull:rsync [option] 远程 本地
推送push:rsync [option] 本地 远程
拉取实例语法:rsync -vzrtopgP -e‘ssh -p 22’用户@ip:/opt /tmp
推送实例语法:rsync -vzrtopP -e ‘ssh -p 22’ /etc 用户@ip:/tmp
关键语法说明:
-vzrtopg相当于上文的-avz, 表示同步是文件和目录属性不变。
-P 显示同步进程-e’ssh -p 22’,表示通过ssh的通道传输数据,
-p 22 可省略
通过守护进程进行数据同步
拉取实践命令:
rsync -avzP rsync://用户@ip:/oldboy/ /test/ --password-file=/etc/rsync.password
推送实践命令:rsync -avzP /test/ rsync://用户@ip:/oldboy/ --password-file=/etc/rsync.passwordrsync
守护进程模式-配置服务端(重点)
安装rsync软件yum -y install rsync
第一阶段:配置rsyncd.confvim /etc/rsyncd.confuid = rsync
访问下面模块中path的权限
uid=rsyncuse
gid = rsyncuse
chroot = no
max connections = 200
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
timeout = 600
[heqing]
path = /heqing/
ignore errors
read only = false 允许上传文件
list = false 允许上传列表文件
hosts allow =172.26.130.0/24 允许连接主机赋权
auth users = rsync_backup 不改 : 虚拟用户
secrets file = /etc/rsync.password rsync_backup用户登录密码文件
保存退出配置文件
dos2unix /etc/rsyncd.conf
需要安装dos2unix工作,主要是使文件格式化位unix,便于linux系统识别,注意:只要是windows系统下文件拿到linux的,尽量格式化,特别是脚本。
mkdir -p /heqing 创建共享目录
useradd rsync -s /sbin/nologin -M 创建rsync用户 -M是要求不带家目录
chown -R rsync:rsync /heqing
编辑rsync.password并给权限
echo “rsync_backup:oldboy” >> /etc/rsync.password
chmod 600 /etc/rsync.password
ll /etc/rsync.password
第二阶段:启动rsyncrsync --daemon
使用netstat或lsof 来查看
netstat -antp | grep rsync或lsof -i tcp:873
设置rsync服务开机自启
systemctl enable rsync
如果要关进程
killall rsync (可能需要多次执行)
重启命令
pkill rsyncrsync --daemonps -ef|grep rsync
第三阶段:配置节点
echo “oldboy” > /etc/rsync.passwordchmod 600 /etc/rsync.passwordll /etc/rsync.password
第四阶段检查排错
先要备份一个文件需要先打包(/var/www/html)
tar zxvf html_$(date +%F).tar.gz ./html/rsync -avzP html_2018-11-06.tar.gz [email protected]::heqing
(::后面跟的是配置文件的模块名,不是路径)
问题排错: No route to host 问题
解决:可能防火墙阻挡了。telnet ip 873 检查,如果出现connection refuse 字样表示防火墙阻挡或服务没启好
问题排除:如果报rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]
解决:配置文件中缺少 fake super = yes,因为版本跟新问题,现在必需添加 fake super = yes vim /etc/rsyncd.conf 添加 fake super = yes :wq退出 killall rsync rsync --daemon