一、关于Rsync
1、Rsync简介
- Rsync是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具。
- Rsync软件适用于unix/linux/windows等多种操作系统平台。
- Rsync英文全称Remote synchronization,从软件的名称就可以看出来,Rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像,远程备份的功能。从同步数据的性能及效率上,Rsync工具更胜一筹。
1)一个rsync相当于scp,cp,rm,但是还优于他们每一个命令。传统的cp,scp工具拷贝每次均为完整的拷贝,而rsync除了可以完整拷贝外,还具备增量拷贝的功能.。
2)在同步备份数据时,默认情况下,Rsync通过其独特的“quick check”算法:
- 它仅同步大小或者最后修改时间发生变化的文件或目录;
- 也可根据权限,属主等属性的变化同步,但需要指定相应的参数;
- 甚至可以实现只同步一个文件里有变化的内容部分。
所以,可以实现快速的同步备份数据。
2、Rsync数据同步原理
一边比对差异,一边对差异的部分进行同步。
3、Rsync特性
- 支持拷贝特殊文件如链接文件,设备等
- 可以有排除(tar?find?)指定文件或目录同步的功能,相当于打包命令tar的排除功能
- 可以做到保持原文件或目录的权限,时间,软硬链接,属主,组等属性均不改变-p
- 可以实现增量同步,即只同步发生变化的数据,因此数据传输效率很高(tar -N)
- 可以使用rcp,rsh,ssh等方式来配合传输文件(rsync本身不对数据加密)
- 可以通过socket(进程方式)传输文件和数据(服务端和客户端)
- 支持匿名或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像
二、语法及参数介绍
SYNOPSIS
Local: rsync [OPTION...] SRC... [DEST]
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
Access via rsync daemon:
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
语法说明
选项 | 作用 |
---|---|
- v,- - verbose | 以详细模式输出,即显示传送过程 |
- z,- - compress | 传输时进行压缩以提高传输效率。- - compress-level=n(n为数字,即可以指定压缩级别) |
- a,- - archive | 归档模式,表示已地柜方式传输文件,并保持所有文件属性 |
- r,- - recursive | 对子目录以递归模式,即目录下的所有目录都同样传输,注意是小写r |
- t,- - times | 保持文件时间信息 |
- o,- - owner | 保持文件属主信息 |
-g,- - group | 保持文件属组信息 |
- p,- - perms | 保持文件权限 |
- P,- - progress | 显示同步过程及传输时的进度等信息 |
- D,- - devices | 保持设备文件信息 |
- l,- - links | 保留软链接 |
- e | 指定信道协议,如 - e “ssh -p 22” |
- - bwlimit=RATE | 限制传输速率 |
- - delete | 让源与目的同步,保持一致 |
- - exclude=文件名 | 排除指定的文件 |
- - exclude-from=文件的绝对路径 | 引用一个排除列表,列表里只需要输入排除的文件名即可 |
#备份/root/ 下的文件到 /tmp/
rsync -avzP /root/ /tmp
#备份/root 到 /tmp/
rsync -avzP /root /tmp
#注意 /root/ 与 /root 的区别
/root/ ---> 将/root/ 下的文件备份
/root ---> 将/root 目录备份
#将/tmp/ 与 /ect/ 保持同步
rsync -avzlP --delete /etc/ /tmp/
#将 /etc/ 除了yum.repos.d,同步到/tmp/,并限速100M
rsync -avzlP --delete --exclude=yum.repos.d --bwlimit=100 /etc/ /tmp
#将/tmp/ 以root用户发送到 192.168.139.153客户端下的/backup/
rsync -avzlP -e "ssh -p 22" /tmp/ [email protected]:/backup/
(通过ssh方式发送,默认是22端口,根据自己情况指定端口)
#将192.168.139.153客户端下的 /etc/ 拉取到 本地/tmp/下
rsync -avzlP [email protected]:/etc/ /tmp/
三、以守护进程(socket)方式传送数据
环境要求:
(1)两台 centos7 机器
(2)网络配置参数
主机名 | 网卡ens32 | 用途 | 代号 |
---|---|---|---|
Ripe1 | 192.168.139.152 | rsync客户端 | client |
Ripe2 | 192.168.139.153 | rsync服务端 | server |
部署操作:
----配置server端
- 检查并修改配置文件
#检查是否安装rsync
rpm -qa rsync
rsync-3.1.2-10.el7.x86_64
(两台机器都下载)
#修改配置文件 /etc/rsyncd.conf
#配置前先备份配置文件,以防改错,养成好的习惯
cp -p /etc/rsyncd.conf{,.`date "+%F"_bak`}
vim /etc/rsyncd.conf
uid = root #属主
gid = root #属组
use chroot = no #程序安全设置
max connections = 4 #最大连接客户端数
timeout = 300 #连接超时时长,单位秒
pid file = /var/run/rsyncd.pid #进程号文件位置
lock file = /var/run/rsync/lock #进程锁文件
---------------------------------------------------
[backup] #设置节点
path = /backup/ #设置备份目录
ignore errors #忽略错误
read only = false #只读(true或false)
list = false #阻止远程列表(不让通过远程方式看服务端内容)
hosts allow = 192.168.139.153 #允许IP
hosts deny = 0.0.0.0/24 #禁止IP
auth users = rsync_backup #虚拟用户
secrets file = /etc/rsync.password #存放用户和密码文件
- 创建rsync程序用户并创建共享目录
#创建rsync程序用户
useradd -M -s /sbin/nologin rsync
#查看结果
grep "^rsync" /etc/password
grep "^rsync" /etc/group
#创建目录
mkdir /backup/
- 启动rsyncd服务
rsync --daemon
netstat -tanup | grep "rsync"
#关闭方式
pkill rsync
- 将 /backup/ 文件夹更改属主属组为rsync,并修改权限为755
chown -R rsync:rsync /backup/
chmod -R 755 /backup/
- 创建rsync虚拟用户和密码,并修改面文件权限
#创建用户和密码
echo "rsync_backup:123456" > /etc/rsync.password
cat /etc/rsync.password
rsync_backup:123456
#修改权限
chmod 600 /etc/rsync.password
----配置client端
- 检查是否安装rsync
rpm -qa rsync
- 创建密码文件,并更改权限为600
echo "123456" > /etc/rsync.password
chmod 600 /etc/rsync.password
至此server端与client端配置完成
测试
#将client端的指定目录内容推送到server端
rsync -lavzP --bwlimit=100 [email protected]::backup --password-file=/etc/rsync.password