基于CentOS7.5的 Rsync 服务详解

第1章 Rsync概述

1.1 Rsync基本概述

rsync是一款开源的备份工具,可以在不同服务器(主机)之间进行同步备份,

可实现完全备份与增量备份,因此非常适合用于架构集中式备份或异地备份等应用。

rsync官方地址:http://rsync.samba.org/

rsync端口:873

rsync运行模式:C/S  

拓展:

C/S   客户端/服务端

B/S   浏览器/服务端

1.2 Rsync常见的两种备份方式

完全备份
增量备份

假设客户端的上有file1 file2 file3文件

服务端上有file1文件,现要将客户端上的数据备份至服务端

 

完全备份,将客户端所有的数据内容file1 file2 file3全部备份至服务端(效率低下,占用空间)

增量备份,将客户端的file2 file3增量备份至服务端(提高备份效率,节省空间,适合异地备份)

1.3 Rsync应用场景

1.3.1 数据同步的推和拉

数据同步的两种方式

推:所有主机推送本地数据至Rsync备份服务器,会导致数据同步缓慢(适合少量数据备份)

拉:rsync备份服务端拉取所有主机上的数据,会导致备份服务器开销大

1.3.2 大量服务器备份场景

如果服务器多的话  所有服务器都用一台服务器备份 会导致同步的时候 备份服务器使用过多 所以使用多台备份服务器

 

1.3.3 异地备份实现思路

 

1.4 Rsync命令对应选项

-a           #归档模式传输, 等于-tropgDl

-v           #详细模式输出, 打印速率, 文件数量等

-z           #传输时进行压缩以提高效率

-r           #递归传输目录及子目录,即目录下得所有目录都同样传输。

-t           #保持文件时间信息

-o           #保持文件属主信息

-p           #保持文件权限

-g           #保持文件属组信息

-l           #保留软连接

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

-D           #保持设备文件信息

-L           #保留软连接指向的目标文件

-e           #使用的信道协议,指定替代rsh的shell程序

--exclude=PATTERN   #指定排除不需要传输的文件模式

--exclude-from=file #文件名所在的目录文件

--bwlimit=100       #限速传输

--partial           #断点续传

--delete            #让目标目录和源目录数据保持一致

1.5 Rsync传输模式

Rsync大致使用三种主要的数据传输方式

本地方式
远程方式
守护进程

1.5.1 本地方式

本地方式相当于cp(复制) 本地略有些鸡肋  功能和cp是一样的

单个主机本地之间的数据传输(此时类似于cp命令)

[root@backup ~]# rsync /etc/passwd /tmp/

[root@backup ~]# ls /tmp/passwd

/tmp/passwd

1.5.2 远程方式

通过ssh通道传输数据,类似scp命令

Access via remote shell: 远程传输

远程方式存在的缺陷:

1.需要使用系统用户(不安全)

2.使用普通用户(权限存在问题)

3.需要走ssh协议

Pull: rsync  [OPTION...]  [USER@]HOST:SRC... [DEST]  下载(拉)

下载pull

[root@nfs ~]# pwd   查看当前路径    在nfs服务器下

/root

[root@nfs ~]# echo "This Nfs" > file

[root@backup ~]# rsync -avz root@172.16.1.31:/root/file /opt/ 

在backup服务器下 以root用户身份将172.16.1.31 root目录下file文件 传输到opt目录下

[root@backup ~]# cat /opt/file   查看内容

This Nfs

Push: rsync  [OPTION...]  SRC... [USER@]HOST:DEST    上传(推)

上传push(将backup的file2文件上传至NFS服务器的/mnt目录)

[root@backup ~]# pwd  查看当前路径    在backup服务器下

/root

[root@backup ~]# echo "This Rsync" > file2

[root@backup ~]# rsync -avz /root/file2 root@172.16.1.31:/mnt

将backup服务器里的root目录下的file2文件 发送到172.16.1.31服务器的mnt目录下

[root@nfs ~]# cat /mnt/file2

This Rsync

推送目录(推送/root/目录下面的所有文件和目录,不会推送/root/目录本身)

[root@backup ~]# rsync -avz /root/ root@172.16.1.31:/tmp

推送目录,推送目录本身以及目录下面的所有文件

[root@backup ~]# rsync -avz /root root@172.16.1.31:/tmp

1.5.3 守护进程

守护进程传输方式:rsync自身非常重要的功能(不使用系统用户,更加安全)

第2章 Rsync服务配置

角色

外网IP(NAT)

内网IP(LAN)

主机名

Rsync的服务端

eth0:10.0.0.41

eth1:172.16.1.41

backup

rsync的客户端

eth0:10.0.0.31

eth1:172.16.1.31

nfs

2.1 安装Rsync

[root@backup ~]# yum -y install rsync

2.2 配置rsync

查询配置文件存放的路径

[root@backup ~]# rpm -qc rsync

/etc/rsyncd.conf

配置/etc/rsyncd.conf   (直接复制下面内容,将原有内容清空)

[root@backup ~]# cat /etc/rsyncd.conf

uid = rsync

gid = rsync

port = 873

fake super = yes

use chroot = no

max connections = 200

timeout = 600

ignore errors

read only = false

list = false

auth users = rsync_backup

secrets file = /etc/rsync.password

log file = /var/log/rsyncd.log

#####################################

[backup]

comment = welcome to oldboyedu backup!

path = /backup
 

2.3 创建用户

2.3.1 运行rsync服务的用户

创建rsync账户,不允许登录不创建家目录

[root@backup ~]# useradd -M -s /sbin/nologin rsync

创建备份目录(尽可能磁盘空间足够大),授权rsync用户为属主

[root@backup ~]# mkdir /backup

[root@backup ~]# chown -R rsync.rsync /backup/

2.3.2 创建虚拟用户

创建虚拟用户密码文件(用于客户端连接时使用的用户)

创建虚拟用户和密码,并赋予600权限

[root@backup ~]# echo "rsync_backup:1" >/etc/rsync.password

[root@backup ~]# chmod 600 /etc/rsync.password

2.4 启动rsync服务

启动rsync服务,并加入开机自启

[root@backup ~]# systemctl start rsyncd

[root@backup ~]# systemctl enable rsyncd

启动后检查

[root@bogon ~]# netstat -lntp|grep rsync
 

2.5 Rsync服务测试

客户端:

Access via rsync daemon:    守护进程方式传输

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

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

1.将客户端的/etc/passwd 推送至 rsync服务端[backup]

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

[root@nfs ~]# rsync -avz /etc/passwd rsync_backup@172.16.1.41::backup

2.将rsync服务端模块[/backup]下载至本地

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

[root@nfs ~]# rsync -avz rsync_backup@172.16.1.41::backup /opt
 

2.6 同步时不输入密码

2.6.1 第一种方式sersync

适合终端执行指定用户密码文件

[root@nfs ~]# echo "1" >/etc/rsync.password  密码为1  将密码写入rsync.password文件

[root@nfs ~]# chmod 600 /etc/rsync.password

rsync -avz rsync_backup@172.16.1.41::backup /opt --password-file=/etc/rsync.password

2.6.2  第二种方式写;脚本时使用

export RSYNC_PASSWORD=1 定义变量

[root@nfs ~]# export RSYNC_PASSWORD=1

[root@nfs ~]# rsync -avz rsync_backup@172.16.1.41::backup /opt 

2.7 强制一致性 (慎用!)

客户端与服务端保持一致(--delete)

--delete强制一致

[root@nfs ~]# rsync -avz /root rsync_backup@172.16.1.41::backup --delete

2.8 限速

--bwlimit=1  限速为1M   工作中常用  不用限速 分分钟带宽占满

rsync -avzP --bwlimit=1 /opt/test.dosk  rsync_backup@172.16.1.41::backup

第3章 Rsync备份案例

统一所有的目录站点是/backup

3.1 备份什么内容

系统重要的配置文件

建议备份的数据内容如下

1.配置文件

开机自启动配置文件  设备挂载配置文件  本地内网配置文件

如/etc/rc.local       /etc/fstab      /etc/hosts             

2.重要目录

cron定时任务       firewalld防火墙       脚本目录

如/var/spool/cron/    /etc/firewalld     /server/scripts

3.系统日志文件

如/var/log/   //系统安全日志、sudo日志、内核日志、rsyslog日志

4.应用程序日志 nginx、PHP、mysql、redis.....

工作中根据实际情况再想下还有什么需要备份的

3.2 怎么备份(格式)

备份在/backup目录下  /backup/日期为名的目录/

例如:

/backup/nfs_172.16.1.31_2018_09_05

/backup/nfs_172.16.1.31_2018_09_06

/backup/nfs_172.16.1.31_2018_09_07

编写脚本 写入定时任务

[root@nfs ~]# echo $(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F)

nfs_172.16.1.31_2018-09-05

[root@nfs ~]# mkdir /server/scripts -p
 

3.3 客户端备份思路

[root@nfs01 backup]# cat /server/scripts/backup_rsync.sh

#!/usr/bin/bash

#1.定义变量

Path=/backup

Host=$(hostname)

Addr=$(ifconfig eth1|awk 'NR==2{print $2}')

Date=$(date +%F)

Dest=${Path}/${Host}_${Addr}_${Date}

#2.检查目录是否存在

[ -d $Dest ] || mkdir -p $Dest

#3.拷贝需要备份的文件至$Dest

   # system backup

cp -rp /etc/passwd /etc/fstab /etc/rc.d/rc.local /var/spool/cron $Dest/

   # user backup

cp -rp /server/ $Dest/

   # config backup

cp -rp /etc/rsyncd.conf $Dest/

#4.推送至备份服务端

Rsync_User=rsync_backup

Rsync_Addr=172.16.1.41

Rsync_Module=backup

export RSYNC_PASSWORD=123456

rsync -avz $Path/ ${Rsync_User}@${Rsync_Addr}::${Rsync_Module}

#5.保留本地最近7天的文件

find $Path/ -type d -mtime +7 -exec rm -rf {} \;

第4章 Rsync常见问题

问题不限于CentOS 7

CentOS 7 以上    防火墙为 firewalld

CentOS 6 及以下 防火墙为 iptables

4.1 rsync服务端开启的iptables防火墙

4.1.1 客户端的错误现象

 No route to host

4.1.2 错误演示过程

[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

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]

4.1.3 异常问题解决

关闭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.

4.2 rsync客户端执行rsync命令错误

4.2.1 客户端的错误现象

[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]

1.2.2 异常问题解决

 rsync命令语法理解错误,::/backup是错误的语法,应该为::backup(rsync模块)

4.3 @ERROR: auth failed on module oldboy

4.3.1 客户端的错误现象

[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]

4.3.2 异常问题解决

1. 密码真的输入错误,用户名真的错误

2. secrets file = /etc/rsync.password指定的密码文件和实际密码文件名称不一致

3. /etc/rsync.password文件权限不是600

4. rsync_backup:oldboy123密码配置文件后面注意不要有空格

   echo "rsync_backup:oldboy123" >>/etc/rsync.password

5. rsync客户端密码文件中只输入密码信息即可,不要输入虚拟认证用户名称

4.4 Unknown module 'backup'

1.4.1 客户端的错误现象

[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]

4.4.2 异常问题解决

/etc/rsyncd.conf配置文件模块名称书写错误

4.5 Permission denied

4.5.1 客户端的错误现象

[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]

4.5.2 异常问题解决

1. 共享目录的属主和属组不正确,不是rsync

2. 共享目录的权限不正确,不是755

4.6 chdir failed

4.6.1 客户端的错误现象

[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]

4.6.2 异常问题解决

1. 备份存储目录没有建立

2. 建立的备份存储目录和配置文件定义不一致

4.7 invalid uid rsync

4.7.1 客户端的错误现象

[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]

4.7.2 异常问题解决

rsync服务对应rsync虚拟用户不存在了,重新创建即可。

4.8 客户端已经配置了密码文件,但免秘钥登录方式,依旧需要输入密码

4.8.1 客户端的错误现象

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

4.8.2 异常问题解决

rsync客户端的秘钥文件也必须是600权限

4.9 rsync客户端连接慢问题

4.9.1 客户端的错误日志

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

4.9.2 客户端的正确日志

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

异常问题解决

查看日志进行分析

4.10 rsync服务没有正确启动

4.10.1 客户端的错误现象

Connection refused (111)

[root@CentOS ~]#  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]

4.10.2 异常问题解决

[root@CentOS ~]# rsync --daemon

[root@CentOS ~]# ss -lntup |grep rsync

tcp    LISTEN     0      5          :::873            :::*      users:(("rsync",1434,5))

tcp    LISTEN     0      5          *:873              *:*      users:(("rsync",1434,4))

[root@CentOS ~]# 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

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/wenrulaogou/p/9592787.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值