Rsync复制软件应用与实践

1.什么是rsync?

开源的、高速的、数据复制工具。

2.rsync作用:

工作中需要数据备份,本地服务器目录、不同机器、不同机房之间的数据备份

3.rsync功能特性

支持拷贝普通文件与特殊文件
支持排除文件或目录,相当于tar的排除
可以做到保持源文件或目录的权限、时间、软硬链接、属主
可以实现增量复制
可以使用rcp,rsh,ssh等方式来配合进行隧道加密传输文件(rsync本身不对数据加密)
可以通过socket(进程方式)传输文件和数据
支持匿名或认证进程模式传输

4.rsync缺点:
大量小文件复制的时候,rsync可能会停止僵死或效率不高
一次性远程拷贝可以用scp,如果大量小文件可以打包再拷贝

全量和增量:

全量复制
        ~]# cp -a /etc/ /opt/
        ~]# \cp -a /etc/ /opt/    #\不询问而直接覆盖
        ~]# touch /etc/test.txt
        ~]# \cp -a /etc/ /opt/
    增量复制
        只复制test.txt

5.增量复制原理
使用quick check算法,只对增量的部分复制,根据大小属性的变化进行复制

2.x版本对比差异后复制,
3.x版本边对比边复制

6.rsync三种工作模式

1)本地(local)

操作:
a.把数据从一个地方复制到另一个地方(仅在一台机器增量) 相当于cp 、mv
b.通过加参数实现删除的功能,相当于rm
c.查看属性信息功能,ls

a.拷贝实践:

~]# ls /opt/
~]# rsync /etc/hosts /opt/
~]# ls /opt/
hosts
~]# ll /etc/hosts /opt/hosts 
-rw-r--r--. 1 root root 295 6月   8 09:46 /etc/hosts
-rw-r--r--  1 root root 295 6月   8 15:19 /opt/hosts

保持属性
~]# ll /etc/hosts /opt/hosts 
-rw-r--r--. 1 root root 295 6月   8 09:46 /etc/hosts
-rw-r--r--  1 root root 295 6月   8 09:46 /opt/hosts

b.删除实践

~]# touch /null.txt   #<---空文件
~]# cat /opt/hosts 
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.168.1.5 lb01
172.168.1.6 lb02
172.16.1.7 web01
172.16.1.8 web02
172.16.1.31 nfs01
172.16.1.41 bakup
172.16.1.51 db01
172.16.1.61 n01
~]# rsync -r --delete /null.txt /opt/hosts   
~]# cat /opt/hosts 

2)远程shell模式
借助类似ssh隧道传输数据,适合不同的机器之间复制

pull,拉:从远端拉取到本地
rsync [option] [user@]host:src... dest
rsync 参数 认证用户@主机地址:源路径 本地路径

options:
  -a 归档递归方式传输
  -v 显示详细信息 verbose
  -z compress传输时进行压缩
  -P 显示传输进度信息
  --exclude 传输时排除指定的文件或目录
[root@nfs01 ~]# rsync -avz root@bakup:/opt/hosts /opt/

push,推:从本地推到远端

rsync [option] src... user@host:dest

[root@nfs01 ~]# rsync -avz /etc/hosts root@bakup:/opt     #<---加密传输

[root@nfs01 ~]# rsync -avz /etc/hosts -e "ssh -p 22" root@bakup:/opt

上述命令是等价的

3) rsync守护进程模式 ※※※
首先要搭建服务端,然后才能在客户端实现推拉数据

================== backup服务器下:=============
实践
1)安装rsync服务

yum install rsync -y

2)备份配置文件

cp /etc/rsyncd.conf{,.ori}

3)创建用户和备份目录/backup

~]# useradd rsync
~]# id rsync
uid=1001(rsync) gid=1001(rsync) 组=1001(rsync)
~]# mkdir -p /backup
~]# chown -R rsync.rsync /backup/   #< ---- 修改
~]# ls -ld /backup/
drwxr-xr-x 2 rsync rsync 6 6月   8 20:26 /backup/

4)修改配置文件内容

cat >/etc/rsyncd.conf<<EOF
#rsync_config_start
#created by oldboy
#rsyncd.conf start##
uid = rsync        #管理备份目录的用户
gid = rsync        #管理备份目录的组
use chroot = no     #安全功能,是否要锁定到备份目录
fake super = yes #不用root用户也可以存储文件的完整属性
max connections = 200    #最大的连接数,并发连接
timeout = 600    #超时时间
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 = 172.16.1.0/24        #授权哪些主机访问
hosts deny = 0.0.0.0/32        #哪些不允许访问
#上边两项二选一
auth users = rsync_backup    #远程虚拟连接用户
secrets file = /etc/rsync.password    #密码文件,格式:用户名:密码 ;权限必须600
[backup]    #[模块名] 远程访问使用模块名访问
comment = welcome to oldbly backup!  #注释
path = /backup/        #服务器端用于备份的目录;用户和组 rsync.rsync
EOF

5)启动rsync并设置开机启动

systemctl start rsyncd
systemctl enable rsyncd

6)配置密码文件

echo "rsync_backup:123456" >/etc/rsync.password
chmod 600 /etc/rsyncd.password

客户端配置
1)
方法一

echo "123456" > /etc/rsync.password
chmod 600 /etc/rsync.password 

方法二

echo 'export RSYNC_PASSWORD=123456' >>/etc/bashrc
. /etc/bashrc
echo $RSYNC_PASSWORD
123456

2)守护进程模式

配置服务器端守护进程,实现数据传输

①服务器提供守护进程 ②客户端执行操作

pull 拉取
语法①:
rsync option user@host::src dest
rsync 参数 用户@主机地址::模块名 /本地路径
语法②:
rsync option rsync://user@host::src dest

push 推送

语法①:
rsync option dest user@host::src
rsync 参数 用户@主机地址::模块名

语法②:
rsync option est rsync://user@host::src d
rsync 参数 :源路径 本地路径

测试执行
1.客户端使用方法一配置,使用如下命令

~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.passwordsending incremental file list

2.客户端使用方法二配置,使用如下命令

~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup 

3.拉取

~]# rsync -avz rsync_backup@172.16.1.41::backup /opt/
上一篇:Rsync命令参数


下一篇:静态代码块,构造代码块,局部代码块演示