Rsync是一种快速并且非常通用的文件复制工具,它以delta-transfer算法闻名,通过仅发送源文件和目的地中现有文件之间的差异来减少在网络上发送的数据量。RSyc广泛用于备份和镜像,并作为日常使用的复制命令。
官网rsync.samba.org/
环境:
Centos 7
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
ip: 192.168.253.153 rsync服务端
ip :192.168.253.137 rsync客户端
0.先把客户端和服务端的防火墙和selinux关了
systemctl stop firewalld
setenforce 0
1.服务端安装采用编译安装
cd /usr/local/src
mkdir rsync
cd rsync
yum install gcc gcc-devel -y
wget https://download.samba.org/pub/rsync/src/rsync-3.1.3.tar.gz
tar -zxf rsync-3.1.3.tar.gz
cd rsync-3.1.3
./configure --prefix=/usr/local/rsync
make && make install
PATH="/usr/local/rsync/bin/:$PATH"
2.服务端编写配置文件/etc/rsyncd.conf(文末会解释每一行意义)
[root@localhost rsync-3.1.3]# cat /etc/rsyncd.conf
#create 2018.5.29 ip 192.168.253.153 by Hal
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 192.168.253.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = "this is a comment"
path = /backup
3.服务端添加相关文件和目录
[root@localhost rsync]# mkdir /backup
[root@localhost backup]# chown -R rsync:rsync /backup
[root@localhost rsync]# useradd rsync
[root@localhost rsync]# cat /etc/rsync.password
rsync_backup:123456
[root@localhost rsync]# chmod 600 /etc/rsync.password
4.服务端启动rsync
[root@localhost rsync]# rsync --daemon
5.查看一下端口有没有打开
成功
6.在客户端yum安装rsync
yum install rsync -y
7.客户端创建密码文件并修改权限
[root@localhost ~]# cat /etc/rsync_passwd
123456
[root@localhost ~]# chmod 600 /etc/rsync_passwd
8.客户端测试能否正常使用rsync服务
[root@localhost ~]# echo "hello world" > hello.txt
[root@localhost ~]# rsync -avz -P hello.txt [email protected]::backup --password-file=/etc/rsync_passwd
sending incremental file list
hello.txt
12 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/1)
sent 108 bytes received 43 bytes 100.67 bytes/sec
total size is 12 speedup is 0.08
9.查看一下服务端的/backup目录是否有hello.txt文件
[root@localhost backup]# cat /backup/hello.txt
hello world
rsync配置文件详解
#create 2018.5.29 ip 192.168.253.153 by Hal
uid = rsync #rsync使用的用户,默认nobody
gid = rsync #rsync使用的gid 默认nobody
use chroot = no #是否限定在该目录下,默认为true,当有软连接时,需要改为fasle,如果为
#true就限定为模块默认目录,通常都在内网使用rsync所以不配也可以
max connections = 200 #设置最大连接数timeout = 300 #超时时间 建议300-600
pid file = /var/run/rsyncd.pid #pid文件位置
lock file = /var/run/rsync.lock #指定lock文件用来支持“max connections ”参数使总连接不会超过限制
log file = /var/log/rsyncd.log #日志文件路径
ignore errors #忽略io错误
read only = false #指定客户端是否可以上传文件,默认
truelist = false #是否允许客户端查看可用模块
hosts allow = 192.168.253.0/24 #允许连接的ip段或个别ip,默认任何人都可以连接
hosts deny = 0.0.0.0/32 #不允许连接的IP段或个别ip
auth users = rsync_backup #指定以空格或逗号分隔用户,他们可以使用这个模块,用户不需要再本
#系统存在,默认所有用户都可以无密码登录
secrets file = /etc/rsync.password #指定用户名和密码文件 格式: 用户名:密码 密码不超过8位
#这个是密码文件 全线最好是600
[backup] comment = "this is a comment" #此参数指定在客户端获取可用模块列表时显示在模块名称旁边的描述字
##符串,默认没有这个参数
path = /backup #模块在服务端的绝对路径
rsync常用命令
将当前目录的hello.txt推送到服务端的backup模块
rsync -avz -P hello.txt [email protected]::backup --password-file=/etc/rsync_passwd
或者
rsync -avz -P hello.txt rsync://[email protected]:/backup --password-file=/etc/rsync_passwd
将远端的backup目录拉取到当前目录
rsync -avz -P rsync://[email protected]:/backup ./ --password-file=/etc/rsync_passwd
或者
rsync -avz -P [email protected]::backup ./ --password-file=/etc/rsync_passwd
也可以利用ssh
利用ssh传输
[root@localhost ~]# rsync -avz -P -e 'ssh -p 22' ./hello.txt [email protected]:/backup/
[email protected]'s password: [email protected]'s password:
sending incremental file list
sent 50 bytes received 12 bytes 17.71 bytes/sec
total size is 0 speedup is 0.00