博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于CentOS7.5的 Rsync 服务详解
阅读量:6802 次
发布时间:2019-06-26

本文共 10926 字,大约阅读时间需要 36 分钟。

第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 NfsPush: 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/file2This 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.confuid = rsyncgid = rsyncport = 873fake super = yesuse chroot = nomax connections = 200timeout = 600ignore errorsread only = falselist = falseauth users = rsync_backupsecrets file = /etc/rsync.passwordlog 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::backup2.将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.passwordrsync -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/scripts3.系统日志文件如/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=/backupHost=$(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 backupcp -rp /etc/passwd /etc/fstab /etc/rc.d/rc.local /var/spool/cron $Dest/   # user backupcp -rp /server/ $Dest/   # config backupcp -rp /etc/rsyncd.conf $Dest/#4.推送至备份服务端Rsync_User=rsync_backupRsync_Addr=172.16.1.41Rsync_Module=backupexport RSYNC_PASSWORD=123456rsync -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::backuprsync: 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 stopiptables: Setting chains to policy ACCEPT: filter          [  OK  ]iptables: Flushing firewall rules:                          [  OK  ]iptables: Unloading modules:                                 [  OK  ][root@backup mnt]# /etc/init.d/iptables statusiptables: Firewall is not running.

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

4.2.1 客户端的错误现象

[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::/backupERROR: 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::backupPassword:@ERROR: auth failed on module backuprsync 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::backupPassword:sending incremental file listhostsrsync: mkstemp ".hosts.5z3AOA" (in backup) failed: Permission denied (13)sent 196 bytes  received 27 bytes  63.71 bytes/sectotal size is 349  speedup is 1.57rsync 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::backupPassword:@ERROR: chdir failedrsync 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::backupPassword:@ERROR: invalid uid rsyncrsync 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.passwordpassword file must not be other-accessiblecontinuing without password filePassword:sending incremental file listsent 26 bytes  received 8 bytes  5.23 bytes/sectotal 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 errors2017/03/08 20:14:43 [3422] name lookup failed for 172.16.1.31: Name or service not known2017/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 list2017/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 errors2017/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 list2017/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::backuprsync: 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 rsynctcp    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::backupPassword:sending incremental file listhostssent 196 bytes  received 27 bytes  49.56 bytes/sectotal size is 349  speedup is 1.57

 

 

 

 

 

 

 

 

 

 

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

你可能感兴趣的文章
《Ansible权威指南 》一2.7 本章小结
查看>>
《iOS编程指南》——2.4节安装iOS SDK
查看>>
Comparing Mongo DB and Couch DB
查看>>
《配置管理最佳实践》——1.6 工具的选择
查看>>
前端工程师如何快速的开发一个微信JSSDK应用
查看>>
Apache Spark源码走读(九)如何进行代码跟读&使用Intellij idea调试Spark源码
查看>>
mysql 主从设计
查看>>
Android应用安全开发之浅谈网页打开APP
查看>>
后退时保存表单状态
查看>>
Python简介
查看>>
泛函编程(13)-无穷数据流-Infinite Stream
查看>>
XML与HTML
查看>>
采用镜像部署LNMP 环境操作步骤
查看>>
不服?来跑个分!
查看>>
Python笔记 开发环境搭建
查看>>
(四)构建dubbo分布式平台-maven代码结构
查看>>
Vue插件从封装到发布
查看>>
扒一扒我们生活中常见的品牌小程序
查看>>
SpringBoot使用Nacos配置中心
查看>>
find grep wc awk sed sort uniq split指令详解
查看>>