rsync服务一原理与数据备份

一、Rsync介绍 
1.1、什么是Rsync

    rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。
    rsync软件使用于Unix、Linux、windows等多种操作系统平台。
    Rsync具有可使本地远程两台主机之间的快速复制同步镜像、远程、备份
的功能这个功能类似ssh带有的scp命令,但又优于scp命令的功能,scp每都是全量拷贝,而rsync可以增量拷贝,当然rsync还可以在本地主机的不同分或目录之间全量及增量的复制数据,这又类似cp命令,但也同样优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝,rsync还可以实现删除文件和目录的功能。

 

1.2、rsync的特性

支持拷贝特殊文件,如连接文件,设备等。
可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能
可以做到保持原有文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改。
可以实现增量同步,既只同步发生变化的数据,因此数据传输效率很高
可以使用rcp,rsh,ssh等方式来配合传输文件(rsync本身不对数据加密)
可以通过socket(进程方式)传输文件和数据
支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像。


二、rsync的工作方式

1.单个主机本地之间的数据传输(此时类似cp命令的功能)
2.借助rcp,ssh等通道来传输数据(此时类似scp命令的功能)
3.以守护进程(socket)的方式传输数据(这个是rsync自身存在的重要功能)
工作方式一(本地):
Local:  rsync [OPTION...] SRC... [DEST]
rsync:为同步的命令
[OPTION...]:为同步是的参数选项
SRC:为源,及待拷的分区、文件或目录等
[DEST]:为目的分区、文件、或目录等

 


实例1:把系统的/etc/hosts文件同步到/opt目录
[root@rsync-A ~]# rsync /etc/hosts /opt/
[root@rsync-A ~]# ll /opt/
total 4
-rw-r--r-- 1 root root 169 Jul 22 20:56 hosts


实例2:清空/opt目录中的所有文件和目录
[root@rsync-A ~]# mkdir /null
[root@rsync-A ~]# rsync -r --delete /null/ /opt/(意思是/null目录有什么,/opt目录就只能有什么)
[root@rsync-A ~]# ll /opt/
total 0


工作方式二(通道):
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST


实例1:把service的/etc/hosts同步到rsync-B的/root目录
[root@rsync-A ~]# rsync -avz /etc/hosts -e 'ssh -p 22' root@10.0.0.130:/root
root@10.0.0.130's password: 
sending incremental file list
hosts
sent 135 bytes  received 31 bytes  66.40 bytes/sec
total size is 169  speedup is 1.02
[root@rsync-B ~]# ll /root/hosts 
-rw-r--r-- 1 root root 169 Jul 22 08:25 /root/hosts
如果遇到这个问题
rsync: Failed to exec ssh: No such file or directory (2)
rsync error: error in IPC code (code 14) at pipe.c(84) [sender=3.0.6]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]
则执行
[root@rsync-A ~]# yum -y install openssh-clients -y


实例2:把rsync-B/root/hosts同步到 rsync-A的/opt目录中
[root@rsync-A ~]# rsync -avz -e 'ssh -p 22' 10.0.0.130:/root/hosts /opt
root@10.0.0.130's password: 
receiving incremental file list
hosts
sent 30 bytes  received 140 bytes  68.00 bytes/sec
total size is 169  speedup is 0.99
[root@rsync-A ~]# ll /opt/
total 4
-rw-r--r-- 1 root root 169 Jul 22 08:25 hosts

 


工作方式三(守护进程,需要部署):
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

 

 


三、rsync命令同步参数选项

-v, --verbose       详细模式输出,传输时的进度等信息
-z, --compress    传输时进行压缩以提高传输率,--compress-level=NUM
    可按级别压。
-a, --archive       归档模式,表示以递归方式传输文件,并保持所有文件属性
                          == -rtopgDl 参数
-t, --times           保持文件时间信息
-o, --owner        保持文件属主信息
-p, --perms        保持文件权限信息
-g, --group         保持文件属组信息
-P  --progress    显示同步的过程及传输时的进度等信息
-D, --devices     保持设备文件信息
-l, --links            保留软链接
-e                      使用信道协议

 


四、部署rsync的守护进程传输

1.服务端配置
1.1创建配置文件编辑
[root@rsync-A ~]# cat /etc/rsyncd.conf(文件默认不存在) 
uid = rsync   #用户 远端的命令要使用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     #日志文件
[liang]        #模块
path = /liang1/    #服务器提供的访问目录
ignore errors        #忽略错误
read only = false        #可写
list = false    #不能列表(不能使用ls查看列表等命令)
hosts allow = 10.0.0.0/24 #允许网段
#hosts deny = 0.0.0.0/32     #拒绝网段(允许拒绝二选一,填一个就好)
auth users = rsync_backup        #连接的虚拟用户,非系统用户
secrets file = /etc/rsync.password     #虚拟用户的账号密码文件


1.2创建用户,目录,授权
[root@rsync-A ~]# touch /liang1
[root@rsync-A ~]# useradd rsync -s /sbin/nologin -M
[root@rsync-A ~]# chown  -R rsync.rsync /liang1
[root@rsync-A ~]# ll -d /liang1
drwxr-xr-x 2 rsync rsync 4096 Jul 22 22:36 /liang1


1.3创建虚拟用户密码文件
[root@rsync-A ~]# echo "rsync_liang:000000" >/etc/rsync.password
[root@rsync-A ~]# chown 600 /etc/rsync.password 
1.4启动daemon
[root@rsync-A ~]# rsync --daemon
[root@rsync-A ~]# netstat -lntup|grep 873
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      2784/rsync          
tcp        0      0 :::873                      :::*                        LISTEN      2784/rsync


2.客户端配置


2.1配置密码文件
[root@rsync-B ~]# echo "000000" >/etc/rsync.password
[root@rsync-B ~]# chmod 600 /etc/rsync.password


3.拉动作验证(不管是推还是拉动作都是在客户端上操作)


3.1服务端创建文件
[root@rsync-A ~]# cd /liang1/
[root@rsync-A liang1]# touch {a..d}
[root@rsync-A liang1]# ll
total 0
-rw-r--r-- 1 root root 0 Jul 22 22:47 a
-rw-r--r-- 1 root root 0 Jul 22 22:47 b
-rw-r--r-- 1 root root 0 Jul 22 22:47 c
-rw-r--r-- 1 root root 0 Jul 22 22:47 d


3.2客户端执行拉动作
方法一
[root@rsync-B ~]# rsync -avz rsync_liang@10.0.0.129::liang /data1/ \
--password-file=/etc/rsync.password 
方法二
[root@rsync-B ~]# rsync -avz rsync://rsync_liang@10.0.0.129/liang /data1/ --password-file=/etc/rsync.password 
receiving incremental file list
./
a
b
c
d
sent 141 bytes  received 286 bytes  170.80 bytes/sec
total size is 0  speedup is 0.00


3.3客户端查看
[root@rsync-B ~]# ll /data1
total 0
-rw-r--r-- 1 root root 0 Jul 22 22:47 a
-rw-r--r-- 1 root root 0 Jul 22 22:47 b
-rw-r--r-- 1 root root 0 Jul 22 22:47 c
-rw-r--r-- 1 root root 0 Jul 22 22:47 d
4.推动作验证
4.1服务端删除文件


[root@rsync-A ~]# rm -rf /liang1/*
[root@rsync-A ~]# ll /liang1
total 0
4.2客户端执行推动作
方法一
[root@rsync-B ~]# rsync -avz /data1/ rsync_liang@10.0.0.129::liang --password-file=/etc/rsync.password 
方法二
[root@rsync-B ~]# rsync -avz /data1/ rsync://rsync_liang@10.0.0.129/liang --password-file=/etc/rsync.password 
sending incremental file list
./
a
b
c
d
sent 201 bytes  received 87 bytes  576.00 bytes/sec
total size is 0  speedup is 0.00


4.3服务端查看
[root@rsync-A ~]# ll /liang1      
total 0
-rw-r--r-- 1 rsync rsync 0 Jul 22 22:47 a
-rw-r--r-- 1 rsync rsync 0 Jul 22 22:47 b
-rw-r--r-- 1 rsync rsync 0 Jul 22 22:47 c
-rw-r--r-- 1 rsync rsync 0 Jul 22 22:47 d
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值