打赏

Rsync服务

第1章 Rsync开篇介绍

1.1 rsync的定义

Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。Rsync软件适用于unix/linux/windows等多种操作系统平台

①  全量备份:第一次传输数据过程中使用全量备份,将全部数据进行传输覆盖

②  增量备份:在第一次传输完毕后再进行传输使用增量备份,只传输差异部分数据

1.2 rsync的简介

Rsync英文全称为Remote synchronization, Rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,在本地主机的不同分区或目录之间全量及增量的复制数据。另外,利用Rsync还可以实现删除文件和目录的功能。

  Centos5,Rsync2.x对比方法,把所有的文件对比一遍,然后在进行同步。

  Centos6,Rsync3.x对比方法,一边比对差异,一边对差异的部分进行同步。

#查看当前虚拟机系统中rsync版本信息

1 [root@backup ~]# rsync --version
2 
3 rsync  version 3.0.6  protocol version 30
4 
5 Copyright (C) 1996-2009 by Andrew Tridgell, Wayne Davison, and others.
6 
7 Web site: http://rsync.samba.org/

#查看客户端man rsync

#查看服务端配置man rsyncd.conf

1.3 实现增量复制的原理

 

1.连接两台服务器,确认两台服务器之间可以正常进行数据传递

2.利用算法检测目标主机与当前主机数据信息是否一致

3.确认无误将增量变化的数据进行传递(默认情况)

 

在同步备份数据时,默认Rsync通过其独特的“quick check”算法,仅同步大小或者最后修改时间发生变化的文件或目录,当然也可以根据权限,属主等属性的变化同步,但需要指定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分。

1.4 rsync的实现方法介绍

具有使本地和远程两台主机之间的数据快速复制同步镜像,远程备份功能,可以在本地主机的不同分区或目录之间全量及增量的复制数据。

类似的命令(1v4):scp cp ls rm [与scp cp命令不同的是rsync实现增量复制或同步]

1.5 rsync特性总结说明

1.5.1 支持拷贝普通文件与特殊文件如链接文件,设备等

1.5.2 可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能

 1 tar zcvf backup_1.tar.gz /opt/data -exclude=oldboy 

说明:在打包/opt/data时就排除了oldboy命名的目录和文件

1.5.3 可以做到保持原文件或目录的权限、时间(访问/修改/创建)、软硬链接、属主、组等所有属性均不改变-p

1.5.4 可实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar -N)

# 将备份/home目录自2008-01-29以来修改过的文件

 1 tar-N 2008-01-29 -zcvf /backups/inc-backup_$(date +%F).tar.gz /home 

# 将备份/home目录昨天以来修改过的文件

 1 tar-N $(date -d yesterday "+%F") -zcvf /backups/inc-backup_$(date +%F ).tar.gz /home 

# 添加文件到已经打包的文件(对压缩文件不起作用)

 1 tar -rf all.tar *.gif 

说明:这条命令是将所有.gif的文件增加到打包的all.tar里面去。-r表示增加文件

1.5.5 可以使用rcp、rsh、ssh等方式来配合进行隧道加密传输文件(rsync本身不对数据加密)

1.5.6 可以通过socket(进程方式)传输文件和数据(服务端和客户端)[重点掌握****]

1.5.7 支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像

1.6 rsync软件的优缺点

rsync优点:

1.增量备份,支持socket(daemon),集中备份(支持推拉,都是以客户端为参照物)

2.远程Shell通道模式还可以加密(SSH)传输,socket(daemon)需要加密传输,可以利用vpn服务或ipsec服务

rsync缺点:

1.大量小文件实时同步的比对时间较长,有时候同步过程中,rsync进程可能会停止

2.同步10G这样的大文件有时也会出问题,未完整同步前是隐藏文件,可以通过快传--partial等参数实现

3.一次性远程拷贝可以用scp,大量小文件要达成一个包再拷贝

 

第2章 Rsync企业工作场景说明

2.1 利用定时任务cron+rsync方式实现数据同步

同步网站内部技术人员数据信息,定时同步配置文件rc.local

说明:定时任务最小周期为1分钟

2.2 利用实时任务cron+rsync方式实现数据同步(解决服务器单点故障)

同步网站外部访问用户数据信息,实时同步方式sersync+rsync;inotify+rsync;lrsyncd+rsync

2.3 *生产场景集群架构服务器备份方案项目(上机)

借助crond+rsync把客户服务器数据同步到备份服务器

全网服务器数据备份解决方案提出及负责实施200x.03-200x.09

1、针对公司重要数据备份混乱状况和领导提出备份全网数据的解决方案

2、通过本地打包备份,然后Rsync结合inotifg应用把全网数据统一备份到一个固定存储服务器,然后在存储服务器上通过脚本检查并报警管理员备份结果

3、定期将IDC机房的数据备份放入公司内部服务器,防止机房地震及火灾问题导致数据丢失

 

第3章 Rsync工作方式介绍

3.1 本地主机间同步方式

Local: rsync [OPTION...] SRC... [DEST]

3.1.1 实例

 1 [root@backup ~]# rsync /etc/hosts /opt/ 

3.2 通过ssh远程隧道方式

Access via remote shell:

拉Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]

推Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

3.2.1 语法说明

1) Rsync为同步的命令

2) [OPTION...]为同步时的参数选项

3) [USER@]HOST...为Rsyng同步的远程的连接用户和主机地址;

[USER@]表示数据传输到远程服务器上时传输数据的用户的身份信息;

HOST表示远程主机信息(IP地址信息 主机名称信息)

4) SRC为源,即待拷的分区、文件或目录等,和HOST之间用一个冒号连接

[远程服务器的数据资源(拉);本地服务器的数据资源(推)]

5) [DEST]即目的分区(目的地)、文件或目录等

[表示本地目录或文件信息(拉);远程目录或文件信息(推)]

  拉取(get),表示从远端主机把数据同步到执行命令的本地主机相应目录;

  推送(put),表示从本地主机执行命令把本地的数据同步到远端主机指定目录下。

3.2.2 实例

1.文件

1 #拉[Pull]
2 [root@backup ~]# rsync -rp root@172.16.1.31:/opt/hosts /etc/
3 
4 #推[Push]
5 [root@backup ~]# rsync -rp /etc/hosts root@172.16.1.31:/opt  #这里默认当前用户就是root,可以省略,即rsync -rp /etc/hosts 172.16.1.31:/opt

2.目录

1 #推
2 [root@backup ~]# rsync -rp /etc/sysconfig root@172.16.1.31:/opt/  #表示把目录本身及子文件推送过去
3 
4 [root@backup ~]# rsync -rp /etc/sysconfig/ root@172.16.1.31:/opt/  #表示只把目录下面的内容推送过去(目录本身不存在)

3.2.3 rsync参数汇总说明

参数

参数说明

-v

详细模式输出,传输时的数据等信息

-z

传输时以压缩的形式以提高传输效率

--compress-level-NUM可按级别进行压缩,局域网可不用压缩

-a

归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

-r

对子目录以递归模式处理,及目录下的所有目录都同样传输

-t

保持文件时间信息

-o

保持文件属主信息

-p

保持文件权限

-g

保持文件属组信息

-l

保留软链接

-D

保持设备文件信息

-P

显示同步的过程及传输时的进度等信息

-e

使用的信道协议,指定替代rsh的shell程序(隧道模式下使用)

-e实现指定ssh加密隧道传输

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

--exclude=PATTERN

指定排除不需要传输的文件模式,相当于tar

--exclude-from=file

文件名所在的目录文件,即可以实现排除多个文件,相当于tar

--bwlimit=RATE

限制I/O带宽,限速

案例如下

--delete

删除那些DST中SRC没有的文件,从而使目标目录SRC和源目录数据DST一致,即无差异同步数据

***保持同步目录及文件属性:

-avzP 相当于-vzrtopgDIP

3.2.3.1  案例:某DBA做数据同步,带宽占满导致用户无法访问网站

问题:没有进行限速设定

 1 rsync -avz dbfile 10.0.0.41:/backup 

解决方法:

 1 rsync -avz --bwlimit=100 dbfile 172.16.1.41:/backup 

3.3 ***rsync daemon守护进程方式(需要有服务端和客户端)

1.规划

backup服务器作为rsync服务端

以rsync客户端服务器作为参照服务器,将数据推到rsync服务端

2.部署环境

主机名

网卡eth0

eth1

用途

backup

10.0.0.41

172.16.1.41

rsync服务端

nfs01

10.0.0.31

172.16.1.31

rsync客户端

3.3.1 服务端配置-rsync(将服务端配置到backup服务器上)

3.3.1.1  01-查看rsync软件是否存在

 1 rpm -qa rsync 

3.3.1.2  02-安装rsync软件

 1 yum install rsync -y 

3.3.1.3  03-编辑rsync软件配置文件--配置文件参考资料man rsyncd.conf

(编写好配置文件以便进行后面的步骤)

 1 vim /etc/rsyncd.conf
 2 
 3 #配置文件描述信息
 4 #creat by Liu at 2017-10-02
 5 ##rsyncd.conf start##
 6 #配置文件全局配置(全局变量)
 7 uid = rsync                 #指定rsync服务运行时,向磁盘进行读取和写入的操作者
 8 gid = rsync
 9 use chroot = no              #安全相关参数
10 max connections = 200        #在同一时间,服务器连接rsync时最大的连接数
11 timeout = 300               #超时时间定义(s),备份完数据后进行超时自动切断连接
12 pid file = /var/run/rsyncd.pid   #存放进程对应id号的PID文件
13 (01.停止进程更方便;02.判断服务是否运行)
14 lock file = /var/run/rsync.lock  #进程的锁文件(当两或多个文件同时传输到一个目的地时,给其中一个文件加锁表示等待该文件处理完毕后再处理另一个文件)
15 log file = /var/log/resyncd.log  #程序运行的日志文件,包括出错信息等
16 ignore errors               #忽略错误程序,继续处理其他文件
17 read only = false            #是否只读,这里设置false表示拥有读写权限进行传输
18 list = false                 #是否可以列表
19 hosts allow = 172.16.1.0/24   #准许访问rsync服务器的客户范围(白名单)
20 #hosts deny = 0.0.0.0/32      #禁止访问rsync服务器的客户范围(黑名单)
21 auth users = rsync_backup    #不存在的用户,只用于开门认证
22 secrets file = /etc/rsync.password       #对不存在的用户进行连接认证时的密钥文件
23 
24 #配置文件模块配置(局部变量【需要遵循全局变量】)
25 [backup]                #[模块名称]以下为局部变量,添加多模块信息无需重启,即时生效
26 path = /backup           #模块数据对应的统一备份位置(路径)
27 comment = "backup dir by oldboy"     #注释,备注信息
28 ##rsyncd.conf end##

3.3.1.4  04-创建rsync软件备份目录的管理用户

 1 useradd -s /sbin/nologin -M rsync 2 3 id rsync 

3.3.1.5  05-创建rsync配置信息中的安全认证文件并修改权限(secrets file密钥)

 1 echo "rsync_backup:oldboy123" >/etc/rsync.password 2 3 chmod 600 /etc/rsync.password 

赋予密码文件权限,只有rsync用户可以读写明文密码

3.3.1.6  06-创建rsync配置信息中的备份目录并进行授权

 1 mkdir -p /backup 2 3 chown -R rsync.rsync /backup 

3.3.1.7  07-启动rsync软件程序进程以获得socket信息(以守护进程的方式)

1 rsync --daemon
2 
3 ps -ef |grep rsync
4 
5 #加入开机自启动
6 
7 echo "/usr/bin/rsync --daemon" >>/etc/rc.local

至此,服务端配置操作完成

3.3.2 客户端配置-其他服务器为客户端

3.3.2.1  01-查看rsync软件是否存在

 1 rpm -qa rsync 

3.3.2.2  02-安装rsync软件

 1 yum install rsync -y 

3.3.2.3  03-创建rsync配置信息中的安全认证文件

 1 echo "oldboy123" >/etc/rsync.password 2 3 chmod 600 /etc/rsync.password  

至此,客户端配置操作完成

3.3.2.4  04-测试rsync软件在客户端

Access via rsync daemon:

Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]

Push: rsync [OPTION...] SRC... [USER@]HOST::DEST

 

实例:交互方式传输数据信息

1 [root@nfs01 ~]# rsync -avz /etc rsync_backup@172.16.1.41::backup  #推(本地用户认证+定义好的模块)
2 
3 Password:输入认证用户的密码oldboy123
4 
5 [root@nfs01 ~]# rsync -avz rsync_backup@172.16.1.41::backup/oldboy /tmp  #拉(服务端用户认证)
6 
7 Password:输入rsync_backup的密码

扩展:实现免交互方式rsync传输数据信息(守护进程)

 1 #这里要保证backup目录下不存在etc 2 3 [root@backup backup]# rsync -avz /etc rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password 

3.4 rsync知识点补充

3.4.1 配置文件内容总结

模块之上内容为全局变量信息,针对所有模块成效

模块之下内容为局部变量信息,只针对指定模块生效

说明:无论是全局变量还是局部变量发生变化,都建议重启rsync服务使配置生效

3.4.2 删除rsync软件程序进程

杀手三人组

①    kill进程pid号

说明:需要知道进程号信息,并且在杀死进程后有提示说明

②    killall 进程名

说明:杀死进程后有提示说明

1 [root@backup ~]# killall rsync
2 
3 [root@backup ~]# killall rsync
4 
5 rsync: no process killed

③    pkill 进程号[模糊杀手,用时需小心]

说明:杀死进程后没有提示信息

pkill杀手的特性注释(以例子说明):

当用pkill杀进程sh脚本时,远程服务就会断开。原因是当pkill杀死sh的同时会连同其他含有sh信息的进程一同杀死,这里就是杀死了sshd导致远程断开。

附:rsync重启方式介绍

 1 [root@backup ~]# ps -ef |grep rsync
 2 
 3 root       3436      1  0 11:46 ?       00:00:00 rsync --daemon
 4 root       3710   1752  0 15:02 pts/1    00:00:00 grep --color=auto rsync
 5 
 6 [root@backup ~]# cat /var/run/rsyncd.pid  #查看PID文件
 7 
 8 3436
 9 
10 [root@backup ~]# kill `cat /var/run/rsyncd.pid`
11 
12 [root@backup ~]# kill `cat /var/run/rsyncd.pid`  #依旧要多杀几次
13 
14 [root@backup ~]# ps -ef |grep rsync
15 
16 root       3710   1752  0 15:02 pts/1    00:00:00 grep --color=auto rsync
17 
18 [root@backup ~]# rsync --daemon  #实现重启

3.4.3 设置rsync软件开机自启动

法一:配置/etc/rc.local文件

法二:配置/etc/init.d/目录

创建脚本信息(if case)→设置脚本文件权限→编辑启动文件参数→加入启动服务列表

方法三:利用xinetd服务启动rsync(确定rsync关闭状态)->有一定影响,尽量不使用

3.4.4 rsync --daemon启动扩展参数

--daemon     #<==表示以守护进程方式启动rsync服务

--address     #<==绑定指定IP地址提供服务

--config=FILE #<==更改配置文件路径,而不是默认的/etc/rsyncd.conf

--port=PORT  #<==更改其他端口提供服务,而不是缺省的873端口

3.4.5 定义变量信息实现免秘钥交互

 1 [root@nfs01 ~]# export RSYNC_PASSWORD=oldboy123 2 3 [root@nfs01 ~]# rsync -avz /etc/services rsync_backup@172.16.1.41::backup 

 

此笔记是本人学习摘记整理而成,此为初稿(尚有诸多不完善之处),原创作品允许转载,转载时请务必以超链接形式标明文章原始出处,作者信息和本声明,否则将追究法律责任。http://www.cnblogs.com/bananaaa/

posted @ 2017-11-17 10:21  banana童  阅读(1408)  评论(0编辑  收藏  举报