rsync英文称为remote synchronizetion,从软件的名称就可以看出来,rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似于ssh带的scp命令,但是又优于scp命令的功能,**scp每次都是全量拷贝,而rsync可以增量拷贝。**当然,rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这又类似cp命令。但是同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。
在同步数据的时候,默认情况下,rsync通过其独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可根据权限、属主等属性的变化同步,但是需要制定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可是实现快速的同步备份数据。
rsync - 快速,通用,可实现全量和增量的远程(和本地)文件复制工具。
rsync监听端口:873
rsync运行模式:C/S
client/server :客户端/服务端
1)可以增量备份,支持socket(daemon),集中备份(支持推拉,都是以客户端为参照物);socket(daemon)需要加密传输,可以利用服务或ipsec服务。
2)可以限速进行数据的备份或恢复操作。
3)远程SHELL通道模式还可以加密(SSH)传输
4)支持匿名认证(无需系统用户)的进程模式传输,可以实现方便安全的进行数据备份和镜像
5)保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变 –p
6)可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。(–exclude)
1)大量小文件时进行同步备份,比对的时间较长,有时候会导致rsync进程停止运行或者进程挂起;
解决方法:
a、打包后再同步;
b、drbd(文件系统同步复制block)。
2)同步大文件,比如:10G这样的,有时也会出现问题,导致rsync进程中断,未完整同步前,是隐藏文件,但是会占用磁盘空间(ls -al查看)。直到同步完成后,将隐藏文件改成正常文件。而且,每中断一次,生成一个隐藏文件。
Rsync有三种传输模式,分别是本地方式、远程方式、守护进程。
本地复制模式:类似于cp
rsync [OPTION...] SRC... [DEST]
隧道传输模式: 类似于scp
Pull: 拉取
rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: 推送
rsync [OPTION...] SRC... [USER@]HOST:DEST
守护进程模式: 以守护进程socket的方式传输数据 最常用
Pull: 拉取
rsync [OPTION...] [USER@]HOST::SRC... [DEST]rsync [OPTION...]
rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: 推送
rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
服务端:192.168.98.134 CentOS7.5
客户端:192.168.98.135 CentOS7.5
注意:两台机器都需要关闭防火墙和selinux
[root@localhost ~]# yum -y install rsync
[root@localhost ~]# vim /etc/rsyncd.conf
#全局配置
uid = root #用户
gid = root #用户组
use chroot = no #安全相关
max connections = 200 #最大连接数
pid file = /var/run/rsyncd.pid #进程对应的进程号文件
lock file = /var/run/rsync.lock #锁文件
log file = /var/log/rsyncd.log #日志文件
# exclude = lost+found/
# transfer logging = yes
timeout = 300 #超时时间
# ignore nonreadable = yes
# dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
# [ftp]
# path = /home/ftp
# comment = ftp export area
#模块配置
[backup] #模块名称
path = /data #模块对应的位置
ignore errors #忽略错误程序
read only = false #是否只读
list = false #是否可以列表
host allow = 192.168.98.0/24 #允许访问rsync服务器的客户范围
#hosts deny = 0.0.0.0/32 #禁止访问rsync服务器的客户范围
auth users = rsync_backup #不存在的用户;只用于认证
secrets file = /etc/rsync.password #设置进行连接认证的密匙文件
[root@localhost ~]# mkdir -p /data
[root@localhost ~]# useradd rsync -s /sbin/nologin -M
[root@localhost ~]# chown -R rsync.rsync /data
[root@localhost ~]# echo "rsync_backup:123456" >/etc/rsync.password
[root@localhost ~]# chmod 600 /etc/rsync.password
[root@localhost ~]# systemctl restart rsyncd
[root@localhost ~]# yum -y install rsync
[root@localhost ~]# echo "123456">/etc/rsync.password
[root@localhost ~]# chmod 600 /etc/rsync.password
[root@localhost ~]# touch aaa.txt
[root@localhost ~]# rsync -avz aaa.txt rsync_backup@192.168.98.134::backup --password-file=/etc/rsync.password
[root@localhost ~]# rsync -avz rsync_backup@192.168.98.134::backup --password-file=/etc/rsync.password /data
[root@localhost ~]# cd /data/
[root@localhost data]# ll
总用量 0
-rw-r--r--. 1 root root 0 4月 29 18:13 aaa.txt