rsync备份服务器基本操作, 原理, 三种模式 面交互传输文件和企业应用

Rsync备份服务/服务器

当使用守护进程的方式时 是增量备份 否则就是scp的传输方式

  • 备份服务器概念介绍
    (1) 对网站服务器数据进行备份存储(恢复丢失/误修改数据)
    (2) 对网站数据进行对比分析 (新旧数据进行比对 分析那里不同)
    (3) 对数据进行批量/统一管理 (例如web集群服务器日志文件)

PS 备份服务器有多少台合适
同一个机房应有多台备份服务器,不同机房也要有多个备份服务器
不同地理位置有多个备份服务器
这种方式叫做两地三中心

  • 服务器备份的数据类型
  1. 内部人员产生的数据 (脚本文件,代码信息, 配置文件, 数据库文件, 日志文件) 备份这种信息使用定时任务进行备份
  2. 外部人员产生的数据(图片信息, 附件信息, 视频信息)这种信息使用实时备份
  • 实现备份服务器备份数据方法
    rsync软件 官方介绍
    快速的 多功能的 远程(本地)文件备份工具
    rsync软件实现快速备份
  1. 全量备份: 将所有数据进行备份 不论目标路径是否有一部分
  2. 增量备份: 匹配数据,将目标路径已有的数据排除 没有的进行备份传输
    原理:
    (1)比较数据属性信息,对比各项属性信息,有改动的进行备份(默认模式)
    (2)比较数据的指纹信息,比对文件指纹 ,判断是否备份(指纹不一样备份 一样跳过)
    默认为比对属性信息 可以用rsync -c 基于指纹信息判断
    Md5 查看文件/目录指纹信息

rsync 使用方式

rsync既是服务也是一个命令

rsync服务有三种模式

  1. 本地备份模式
  2. 远程备份模式
  3. 守护进程模式
  • 本地模式
    使用rsync实现本地备份 用法和cp一致
    rsync 参数 源文件 目标路径
[root@backup ~]# rsync person.txt /tmp/
[root@backup ~]# ls /tmp/
person.txt
  • 远程模式
    使用rsync实现不同主机之间远程备份 用法和scp一致
    scp -rp 源目录 目标IP地址:目标路径(存放地点)
  1. 远程推送模式(上传)
    rsync -avz(基本固定参数) 参照服务器源文件 目标IP地址:目标存放路径
    ip地址和路径之间必须用一个:隔开
    参照服务器: 在哪台服务器进行操作那台就是参照服务
[root@backup ~]# rsync -avz person.txt 172.16.1.7:/tmp/
                命令    参数  源文件     目标IP : 号隔开目标路径
root@172.16.1.7's password:   #输入目标用户的密码
sending incremental file list
person.txt
检查目标地址是否已有此文件
sent 155 bytes  received 35 bytes  42.22 bytes/sec
total size is 70  speedup is 0.37
备份成功
  1. 远程拉取模式(下载)
    rsync -avz(基本固定参数) 目标IP地址:源文件存放路径 参照服务器存放数据路径
[root@backup ~]# rsync -avz 172.16.1.7:/tmp/person.txt /
root@172.16.1.7's password:    当前用户为准传输并不一定是root用户
receiving incremental file list
person.txt

sent 43 bytes  received 155 bytes  44.00 bytes/sec
total size is 70  speedup is 0.35
[root@backup ~]# ls /
person.txt  

rsync守护进程部署流程

部署分为服务器端部署 客户端部署
服务端部署

  1. 确认软件是否安装rpm -qa rsync
    没有安装就进行安装yum install rsync
  2. 编写配置文件
    学习配置方法man rsynd.conf
    配置文件vim rsyncd.conf
[root@backup ~]# vim /etc/rsyncd.conf
uid = rsync                      管理备份目录的属主信息
gid = rsync                      管理备份目录的属组信息
port = 873                       指定收获进程服务端口信息(默认873)
fake super = yes                 让服务的虚拟用户伪装成超级管理员
use chroot = no                  和远程传输安全有关参数
max connections = 200            最大连接数  
timeout = 300            连接超时时间(默认秒为单位) (无数据传输等待断开时间)
pid file = /var/run/rsyncd.pid   记录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  认证用户密码文件(用户:密码)
[backup]                          模块信息,调用模块存入模块指定目录
comment = "backup dir by oldboy"  模块注释信息
path = /backup                    模块指定备份路径

配置模板

uid = rsync
gid = rsync
port = 873
fake super = yes
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 = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = "backup dir by oldboy"
path = /backup
  1. 创建虚拟用户
    useradd -M -s /sbin/nologin rsync
    创建虚拟用户
  2. 创建用户密码文件
    echo rsync_backup:密码 >/etc/rsync.password
    追加密码文件
  3. 创建备份目录 修改目录属主属组
    mkdir -p /backup
    创建目录
    chown rsync.rsync /backup
    修改属主属组
  4. 启动/重启服务
    systemctl start rsyncd 启动服务
    systemctl restart rsyncd 重启服务
    systemctl enable rsyncd 永久开启(开机启动)
    客户机测试是否设置成功
    rsync -avz 源文件 rsync_backup@目标地址::backup(模块)
    IP和模块之间必须用::两个冒号隔开
[root@web01 ~]# rsync -avz /tmp/person.txt rsync_backup@172.16.1.41::backup
Password: 
sending incremental file list
person.txt
rsync: chgrp ".person.txt.ZYlZXe" (in backup) failed: Operation not permitted (1)

sent 159 bytes  received 129 bytes  64.00 bytes/sec
total size is 70  speedup is 0.24
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]

Rsync守护进程模式备份数据原理

  1. 第一 客户端向服务端发送请求传输数据信息, 命令中有认证用户信息,传输数据信息
  2. 第二 服务端接收到传输数据命令信息, 审核认证用户-->发送回复信息(需要认证密码)
  3. 第三 客户端发送认证密码信息
  4. 第四 服务端发送确认信息
  5. 第五 客户端用户携带数据通过网络进行传输,服务端将用户身份进行转换成配置文件中对应的用户(uid gid)
  6. 第六 服务端将数据存入指定目录 发送存储完毕确认信息,并且默认把存储的数据属主属组转换成rsync的用户(可修改)

Rsync参数说明

-a 归档参数等价 (-rlptgoD参数集合)
-z 传输时进行压缩传送
-v 传输时显示结果和基本过程
-q 传输时显示具体过程
--exclude= 指定排除文件/目录(排除数据时相对传输路径编写)
--exclude-from=编写好的排除文件 指定批量排除数据(排除数据时相对传输路径编写)
--detele 无差异同步传输数据,保证双方数据一致
--password-file=密钥文件 面交互传输数据
--bwlimit 限制传输速率 (限制每秒传输的字节数)

Rsync 免交互传输备份

创建密码文件实现无交互备份

配置备份服务器的rsync配置文件

[root@DaMoWang ~]# vim /etc/rsyncd.conf     #修改rsync的配置文件</pre>

# 用户
uid = rsync
# 组
gid = rsync
# 程序安全设置
use chroot = no
# 客户端连接数
max connections = 200
# 超时时间
timeout = 300
# 本机ip
address = 192.168.94.29

# 监听端口
port 873
# 进程号文件位置
pid file = /var/run/rsyncd.pid
# 进程锁
lock file = /var/run/rsync.lock
# 日志文件位置
log file = /var/log/rsyncd.log
# 共享模块名称
[backup]
# 使用目录
path = /backup/
# 有错误时忽略
ignore errors
# 可读可写
read only = false
# 阻止访问远程列表
list = false
# 允许IP
hosts allow = 192.168.94.0/24
# 禁止IP
hosts deny = 0.0.0.0/32
# 虚拟用户
auth users = rsync_backup
# 存放用户和密码的文件
secrets file = /etc/rsync.password
# 排除的压缩类型
dont compress = .gz .bz2 .tgz .zip .rar .z
# 共享模块名称
[nfsbackup]
# 使用目录
path = /data/
# 有错误时忽略
ignore errors
# 可读可写(true或false)
read only = no
# 阻止远程列表(不让通过远程方式看服务端有什么)
list = false
# 允许IP
hosts allow = 192.168.94.0/24
# 禁止IP
hosts deny = 0.0.0.0/32
# 虚拟用户
auth users = rsync_backup
# 存放用户和密码的文件
secrets file = /etc/rsync.password

#保存退出
#把密码文件的权限改成600
[root@DaMoWang ~]# chmod 600 /etc/rsync.password
[root@DaMoWang ~]# echo “rsync_backup:475541270” > /etc/tc/rsync.password    #设置密码到密码文件中
[root@DaMoWang ~]# useradd -M -s /sbin/nologin rsync  
[root@DamOWang ~]# chmod +R rsync /backup

服务器端配置完成 , 下面把客户端里添加密码文件即可实现面交互

[root@DaMoWang ~]# echo "475541270" > /etc/rsync.password
[root@DaMoWang ~]# mkdir /backup #创建共享目录
[root@DaMoWang ~]# cd /backup [root@DaMoWang backup]# touch {1..5}.txt  #创建测试文件 [root@DaMoWang backup]# rsync -azp /backup/ rsync_backup@192.168.94.29::backup --password-file=/et
c/rsync.password  #推送数据到备份服务器
sending incremental file list
./
1.txt
              0 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=5/6)
2.txt
              0 100%    0.00kB/s    0:00:00 (xfr#2, to-chk=4/6)
3.txt
              0 100%    0.00kB/s    0:00:00 (xfr#3, to-chk=3/6)
4.txt
              0 100%    0.00kB/s    0:00:00 (xfr#4, to-chk=2/6)

Rsync企业守护进程模式应用

  1. 多模块配置
    当多个部门要在备份服务器备份不同的数据 就要分开存储 这时就要配置多模块
vim /etc/rsyncd.conf (编写配置文件)
[backup1]
comment = "注释信息"
path = 模块指定目录
[backup2]
comment = "注释信息"
path = 模块指定目录
wq!

保存后修改目录属主属组
chown -R xxx.xxx 模块制定目录
重启服务
systemctl restart rsyncd
  1. 守护进程模式数据排除功能
    将目录下某个文件进行排除
    方法一 :

rsync -avz /oldboy/ --exclude=oldboy.txt(相对传输文件路径进程排除文件) rsync_backup@172.16.1.41::backup1 --password-file=密钥文件

排除多个文件/目录用空格隔开

方法二 :提前编写排除的数据名称文件 (相对传输备份路径)

rsync -avz /oldboy/ --exclude-from=编写好的排除文件路径rsync_backup@172.16.1.41::backup1 --password-file=密钥文件

  1. 守护进程模式数据无差异备份
    企业应用保证数据同步一致 (存储服务器数据和备份服务器一致)

rsync -avz /oldboy/ --delete rsync_backup@172.16.1.41::backup1 --password-file=密钥文件
源目录和备份目录保持一致 (多的删除少的添加)

  1. 守护进程模式创建子目录功能
    有时我们备份某些数据并不是都放在一个文件夹内 这时就要新的文件夹 但总不能每次都去更改备份服务器 这事就出现了子目录功能

rsync -avz /oldboy/ rsync_backup@172.16.1.41::backup1/oldboy/

在backup1模块规定目录下添加一个子目录 存储文件

  1. 守护进程模式访问策略 (白名单/黑名单)
    (1) 当只有白名单时 访问地址会匹配白名单 符合的放行进行传输数据
    当不符合时默认拒绝
    (2) 当只有黑名单时 访问地址会匹配黑名单 符合的进行拒绝访问
    当不符合时默认允许
    (3) 当黑白名单都存在时 访问地址会都进行匹配
    一 都不符合 默认放行
    二 符合黑名单 不符合白名单 阻止链接
    三 符合白名单也符合黑名单默认放行 (默认白名单大于黑名单)

  2. 守护进程列表功能
    默认为开启 (并不安全) 需要在配置文件内设置关闭(安全)
    当开启时输入rsync rsync_backup@192.16.1.41::会直接显示所有模块指定存储路径和默认存储路径
    在配置文件添加list = falsa关闭列表功能

Rsync服务常见错误

  • rsync服务端开启的iptables防火墙
    【客户端的错误】
    No route to host
    【错误演示过程】
rsync: failed to connect to 172.16.1.41: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]

【异常问题解决】
关闭rsync服务端的防火墙服务(iptables)

[root@backup mnt]# /etc/init.d/iptables stop
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
[root@backup mnt]# /etc/init.d/iptables status
iptables: Firewall is not running.
  • rsync客户端执行rsync命令错误
    【客户端的错误】
    The remote path must start with a module name not a /
    【错误演示过程】
 [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::/backup
ERROR: The remote path must start with a module name not a /
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

【异常问题解决】
rsync命令语法理解错误,::/backup是错误的语法,应该为::backup(rsync模块)

  • rsync服务认证用户失败
    【客户端的错误】
    auth failed on module oldboy
    【错误演示过程】
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
   Password: 
   @ERROR: auth failed on module backup
   rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

【异常问题解决】

  1. 密码真的输入错误,用户名真的错误
  2. secrets file = /etc/rsync.password指定的密码文件和实际密码文件名称不一致 信息复制粘贴
  3. /etc/rsync.password文件权限不是600 服务端
  4. rsync_backup:123456 密码配置文件后面注意不要有空格
    如何看出文件结尾空格信息:
    方法一:在vim编辑中查看
    底行模式---:set list
    方法二:在cat命令中查看
[root@backup ~]# cat -A /etc/rsync.password 
rsync_backup:oldboy123 $
  1. rsync客户端密码文件中只输入密码信息即可,不要输入虚拟认证用户名称
  • rsync服务位置模块错误
    【客户端的错误】
    Unknown module 'backup'
    【错误演示过程】
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
   @ERROR: Unknown module 'backup'
   rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

【异常问题解决】

  1. /etc/rsyncd.conf配置文件模块名称书写错误
  • rsync服务权限阻止问题
    【客户端的错误】
    Permission denied
    【错误演示过程】
   [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
   Password: 
   sending incremental file list
   hosts
   rsync: mkstemp ".hosts.5z3AOA" (in backup) failed: Permission denied (13) 
   sent 196 bytes  received 27 bytes  63.71 bytes/sec
   total size is 349  speedup is 1.57
   rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]   

【异常问题解决】

  1. 备份目录的属主和属组不正确,不是rsync
  2. 备份目录的权限不正确,不是777
  • rsync服务备份目录异常
    【客户端的错误】
    chdir failed
    【错误演示过程】
   [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
   Password: 
   @ERROR: chdir failed
   rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

【异常问题解决】

  1. 备份存储目录没有建立
  2. 建立的备份存储目录和配置文件定义不一致
    说明:如果没有备份存储目录
  • rsync服务无效用户信息
    【客户端的错误】
    invalid uid rsync
    【错误演示过程】
   [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
   Password: 
   @ERROR: invalid uid rsync
   rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

【异常问题解决】
rsync服务对应rsync虚拟用户不存在了

  • 客户端已经配置了密码文件,但免秘钥登录方式,依旧需要输入密码
    【客户端的错误】
    password file must not be other-accessible
    【错误演示过程】
   [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
   password file must not be other-accessible
   continuing without password file
   Password: 
   sending incremental file list
   sent 26 bytes  received 8 bytes  5.23 bytes/sec
   total size is 349  speedup is 10.26

【异常问题解决】
rsync客户端的秘钥文件也必须是600权限

  • rsync客户端连接慢问题
    【错误日志信息】 名称或者域名 --- IP dns解析
  错误日志输出      IP  --- 名称或者域名 反向dns解析
   2017/03/08 20:14:43 [3422] params.c:Parameter() - Ignoring badly formed line in configuration file: ignore errors
   2017/03/08 20:14:43 [3422] name lookup failed for 172.16.1.31: Name or service not known
   2017/03/08 20:14:43 [3422] connect from UNKNOWN (172.16.1.31)
   2017/03/08 20:14:43 [3422] rsync to backup/ from rsync_backup@unknown (172.16.1.31)
   2017/03/08 20:14:43 [3422] receiving file list
   2017/03/08 20:14:43 [3422] sent 76 bytes  received 83 bytes  total size 349
   正确日志输出
   2017/03/08 20:16:45 [3443] params.c:Parameter() - Ignoring badly formed line in configuration file: ignore errors
   2017/03/08 20:16:45 [3443] connect from nfs01 (172.16.1.31)
   2017/03/08 20:16:45 [3443] rsync to backup/ from rsync_backup@nfs02 (172.16.1.31)
   2017/03/08 20:16:45 [3443] receiving file list
   2017/03/08 20:16:45 [3443] sent 76 bytes  received 83 bytes  total size 349

【异常问题解决】
查看日志进行分析,编写rsync服务端hosts解析文件
客户端 10.0.0.31 ---> 服务端 识别源地址 10.0.0.31 - RDNS(反向dns解析)

  • rsync服务没有正确启动
    【错误日志信息】
    Connection refused (111)
    【错误演示过程】
   [root@oldboy-muban ~]#  rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
   rsync: failed to connect to 172.16.1.41: Connection refused (111)
   rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]

【异常问题解决】

   [root@oldboy-muban ~]# rsync --daemon
   [root@oldboy-muban ~]# ss -lntup |grep rsync
   tcp    LISTEN     0      5                     :::873                  :::*      users:(("rsync",1434,5))
   tcp    LISTEN     0      5                      *:873                   *:*      users:(("rsync",1434,4))
   [root@oldboy-muban ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup
   Password: 
   sending incremental file list
   hosts  
   sent 196 bytes  received 27 bytes  49.56 bytes/sec
   total size is 349  speedup is 1.57
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容