Rsync同步过程中遇到的常见问题
一、Rsync服务介绍
Rsync属于一款实现全量及增量同步数据的软件工具,适用于unix/linux/windows等多种操作系统平台。
Rsync软件能实现本地复制,远程复制,或者远程守护进程方式复制。它以其delta-transfer算法闻名,减少通过网络数据发送数量,利用只发送源文件和目标文件之间的差异信息,从而实现数据的增量同步复制。
二、Rsync工作方式
- 本地数据备份方式
- 远程传输数据方式
- 守护进程传输数据方式
以rsync守护进程方式实现为主,通过man rsync帮助,查看用法。
#拉取数据的命令参数用法
Pull:rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
参数解释:
[USER@]HOST:: --- 指定远程连接的认证用户
SRC --- 指定相应的模块信息
[DEST] --- 将远程数据保存到本地的路径信息
#推送数据的命令参数用法
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
参数解释:
[USER@]HOST:: --- 指定远程连接的认证用户
SRC --- 指定本地要进行推送的数据信息
[DEST] --- 远程进行保存数据的模块信息
三、守护进程部署流程
3.1 服务端部署
1)主机环境检查
[root@backup ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
[root@backup ~]# uname -r
2.6.32-642.el6.x86_64
[root@backup ~]# uname -m
x86_64
2)检查软件是否安装
[root@backup ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
3)编辑配置文件
配置文件默认不存在,需要在/etc目录下创建rsyncd.conf。
参数用法:man rsyncd.conf。
#created by user at 2018
###rsyncd.conf start###
uid = www #管理备份目录的用户(需要在linux系统下创建虚拟用户)
gid = www #管理备份目录的用户组
use chroot = no #保护模式,一般内网使用,可以选择禁用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 #备份传输过程中,忽略一些I/O产生的传输错误
read only = false #对备份目录开启读写权限,默认为true,只读模式
list = false #禁止通过客户端查询服务端配置的模块信息
hosts allow = 172.16.1.0/24 #允许指定网段或主机来访问备份目录
auth users = rsync_backup #认证用户(虚拟认证用户),不是真实存在的,非linux系统管理的虚拟用户
secrets file = /etc/rsync.pass #设置免交互方式用户认证文件
[data] #指定备份目录的模块名称
comment = "sersync dir by myself"
path = /data #以绝对路径方式,设置备份目录路径信息
4)创建备份目录管理用户
[root@backup ~]# useradd www -M -s /sbin/nologin
5)创建备份目录
[root@backup ~]# mkdir /data
[root@backup ~]# chown -R www.www /data
6)创建用户认证文件
[root@backup ~]# echo 'rsync_backup:123456' >>/etc/rsync.pass
[root@backup ~]# chmod 600 /etc/rsync.pass
追加内容"认证用户:密码"到认证文件中,在追加前先切换为英文输入法,行尾不添加空格或tab等内容,防止认证出错。
可以通过vim编辑器尾行模式,输入:set list检查,或者使用命令cat -A /etc/rsync.pass检查。
7)启动Rsync服务
[root@backup ~]# rsync --daemon
[root@backup ~]# netstat -lntp|grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 12805/rsync
tcp 0 0 :::873 :::* LISTEN 12805/rsync
[root@backup ~]# echo '/usr/bin/rsync --daemon' >>/etc/rc.local
如果rsync服务默认端口873被其他服务占用,使用rsync --daemon --port=PORT命令启动测试,更多帮助查看rsync --daemon --help。
3.2 客户端部署
1)主机环境检查
[root@nfs ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
[root@nfs ~]# uname -r
2.6.32-642.el6.x86_64
[root@nfs ~]# uname -m
x86_64
2)检查软件是否安装
[root@nfs ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
3)创建认证文件
[root@nfs ~]# echo '123456' >>/etc/rsync.pass
[root@nfs ~]# chmod 600 /etc/rsync.pass
客户端认证文件只需要添加密码即可,认证用户在客户端通过rsync命令进行设置。
4)进行数据备份测试
#客户端备份数据
[root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.pass
sending incremental file list
hosts
sent 180 bytes received 27 bytes 414.00 bytes/sec
total size is 294 speedup is 1.42
#服务端检查备份数据
[root@backup ~]# ll /data/hosts
-rw-r--r-- 1 www www 294 Nov 6 2018 /data/hosts
四、Rsync备份过程中常见的错误问题总结
1. 客户端执行rsync命令发生错误问题
- 错误提示
ERROR: The remote path must start with a module name not a / - 演示过程
[root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::/data --password-file=/etc/rsync.pass
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命令语法错误,::/data错误的语法,data为模块,而不是目录,正确写法::data。
2. 配置了免交互方式备份数据,客户端依旧需要输入密码问题
错误提示
password file must not be other-accessible演示过程
[root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.pass
password file must not be other-accessible
continuing without password file
Password:
sending incremental file listsent 26 bytes received 8 bytes 9.71 bytes/sec
total size is 294 speedup is 8.65问题解决
Rsync客户端的认证文件不是600权限。
3. Rsync服务端防火墙问题
- 错误提示
No route to host - 演示过程
[root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.pass
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服务端开启了防火墙功能,关闭即可。
4. Rsync用户认证失败问题
- 错误提示
ERROR: auth failed on module data - 演示过程
[root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.pass
@ERROR: auth failed on module data
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6] - 问题解决
1.客户端rsync命令认证用户没写对,或者认证文件密码所在行的结尾有多余的空格或tab(cat -A /etc/rsync.pass检查)
2.客户端认证文件/etc/rsync.pass配置错误,不需要rsync_backup认证用户,只需要设置认证密码即可。
3.服务端认证文件中rsync_backup:123456后有空行或tab,需要注意。
4.服务端认证文件/etc/rsync.pass权限不是600。
5.服务端rsyncd.conf配置文件中,secrets file参数设置的认证文件名称与系统中创建的认证文件名称不一致。
6.服务端rsyncd.conf配置文件中,uid和gid设置的管理用户与备份目录管理用户不一致。
5. Rsync服务权限阻止问题
错误提示
Permission denied演示过程
[root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.pass
sending incremental file list
hosts
rsync: mkstemp ".hosts.dGfSQ1" (in data) failed: Permission denied (13)sent 180 bytes received 27 bytes 414.00 bytes/sec
total size is 294 speedup is 1.42
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]问题解决
1.服务端/etc/rsyncd.conf文件中,uid和gid设置的管理用户与备份目录的属主和属组不一致。
2.备份目录的文件权限不是755。
6. Rsync服务备份目录异常问题
- 错误提示
ERROR: chdir failed - 演示过程
[root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.pass
@ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6] - 问题解决
服务端/etc/rsyncd.conf文件中,备份目录模块path路径设置存在问题,检查目录是否存在,或者path路径是否填写正确。
7. Rsync服务备份模块异常问题
- 错误提示
ERROR: Unknown module 'data' - 演示过程
[root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.pass
@ERROR: Unknown module 'data'
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6] - 问题解决
1.客户端rsync命令执行时,指定的模块名称不正确。
2.服务端/etc/rsyncd.conf文件中,指定的备份目录的模块名称不正确。
8.Rsync无效的用户问题
- 错误提示
ERROR: invalid uid mine - 演示过程
[root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.pass
@ERROR: invalid uid mine
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6] - 问题解决
服务端管理备份目录的虚拟用户不存在,通过“useradd 用户 -M -s /sbin/nologin”进行创建即可。
9. Rsync服务未开启问题
- 错误提示
Connection refused - 演示过程
[root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.pass
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] - 问题解决
1.检查服务:ps -ef|grep [r]sync
2.开启服务:rsync --daemon
10. Rsync服务连接超时问题
- 错误提示
Connection timed out - 演示过程
[root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.51::data --password-file=/etc/rsync.pass
rsync: failed to connect to 172.16.1.51: Connection timed out (110)
rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6] - 问题解决
检查目标主机IP地址,ping目标主机检查链路是否正常。
[root@nfs ~]# ping 172.16.1.41
PING 172.16.1.41 (172.16.1.41) 56(84) bytes of data.
64 bytes from 172.16.1.41: icmp_seq=1 ttl=64 time=0.438 ms
64 bytes from 172.16.1.41: icmp_seq=2 ttl=64 time=0.543 ms
11. Rsync服务连接慢的问题
- 日志分析
[root@backup ~]# tailf /var/log/rsyncd.log
2019/06/27 12:49:35 [22251] params.c:Parameter() - Ignoring badly formed line in configuration file: ignore errors
--- 未对rsync客户端主机在服务端进行host解析,导致反向解析域名,使得连接缓慢。
2019/06/27 12:49:55 [22251] name lookup failed for 172.16.1.31: Temporary failure in name resolution
2019/06/27 12:49:55 [22251] connect from UNKNOWN (172.16.1.31)
2019/06/27 12:49:55 [22251] rsync to data/ from rsync_backup@unknown (172.16.1.31)
2019/06/27 12:49:55 [22251] receiving file list
2019/06/27 12:49:56 [22251] sent 76 bytes received 81 bytes total size 294 - 问题解决
[root@backup ~]# echo -e '172.16.1.31\tnfs' >>/etc/hosts
[root@backup ~]# tailf /var/log/rsyncd.log
2019/06/27 12:55:06 [22268] params.c:Parameter() - Ignoring badly formed line in configuration file: ignore errors
--- 可以查看到服务端对nfs主机进行了正确的反向解析过程。
2019/06/27 12:55:06 [22268] connect from nfs (172.16.1.31)
2019/06/27 12:55:06 [22268] rsync to data/ from rsync_backup@nfs (172.16.1.31)
2019/06/27 12:55:06 [22268] receiving file list
2019/06/27 12:55:06 [22268] sent 76 bytes received 81 bytes total size 294
Rsync同步过程中遇到的常见问题的更多相关文章
- Android应用之——微信微博第三方sdk登录分享使用过程中的一些常见问题
前言 近期在使用第三方登录和分享的过程中遇到了非常多问题,一方面能够归结为自己经验的不足,还有一方面事实上也说明了官方文档的含糊不清.这篇博文不会写关于怎样使用第三方登录分享,由于官方文档已经写明了步 ...
- java多线程的等待唤醒机制及如何解决同步过程中的安全问题
/* class Person{ String name; String sex; boolean flag = true; public void setPerson(String name, St ...
- Windows使用过程中的一些常见问题的解决方案
Win8安装程序出现2502.2503错误解决方法 参见百度经验帖子:http://jingyan.baidu.com/article/a501d80cec07daec630f5e18.html
- Django数据同步过程中遇到的问题:
1.raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__ve ...
- 开启mysql远程访问过程中所遇常见问题的解决办法
MYSQL ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.10.210' (111) 解决方法 今天在测试MySQL的连接 ...
- idea使用过程中的一些常见问题,做个笔记
:当实现这个接口方法时重载是不允许的. 首先我相信我的代码肯定没问题,因为我实现的接口确实有这个方法.在编程阶段就提示这个错误,于是我有理由相信应该是编译错误!通过google,解决办法so easy ...
- 运维工作中常用到的几个rsync同步命令
作为一个运维工程师,经常可能会面对几十台.几百台甚至上千台服务器,除了批量操作外,环境同步.数据同步也是必不可少的技能.说到“同步”,不得不提的利器就是rsync. 下面结合本人近几年运维工作中对这一 ...
- 使用rsync同步目录
本文描述了linux下使用rsync单向同步两个机器目录的问题. 使用rsync同步后可以保持目录的一致性(含删除操作). 数据同步方式 从主机拉数据 备机上启动的流程 同步命令: rsync -av ...
- 用 rsync 同步本地和服务器的文件
参考 DigitalOcean 安装 For Debian/Ubuntu: sudo apt-get install rsync For OpenSUSE/Fedora: sudo yum insta ...
随机推荐
- git如何获取获取子模块的代码?
答: 步骤如下: 1. git submodule init 2. git submodule update
- CentOS 7下安装Redis
1.安装gcc环境 sudo yum install gcc-c++ 2.安装wget sudo yum install wget 3.下载Redis源码包 wget http://download. ...
- keras Dense 层
文档地址:https://keras.io/layers/core/#dense keras.layers.Dense(units, activation=None, use_bias=True, k ...
- 小数组的读写和带Buffer的读写哪个快
定义小数组如果是8192个字节大小和Buffered比较的话 定义小数组会略胜一筹,因为读和写操作的是同一个数组 而Buffered操作的是两个数组
- python下multiprocessing和gevent的组合使用
python下multiprocessing和gevent的组合使用 对于有些人来说Gevent和multiprocessing组合在一起使用算是个又高大上又奇葩的工作模式. Python的多线程受制 ...
- Carve Visual Studio2015编译
下载Carve库 https://github.com/folded/carve 目录结构如下: 用Visual Studio2015打开,点击右键,生成即可 在bin目录下生成了 .lib文件 ...
- python中简化的验证码功能
验证码一般用来验证登陆.交易等行为,减少对端为机器操作的概率,python中可以使用random模块,char()内置函数来实现一个简单的验证码功能. import random def veri_c ...
- HTTP中的请求头和响应头属性解析
HTTP中的请求头和响应头属性解析 下面总结一下平时web开发中,HTTP请求的相关过程以及重要的参数意义 一次完整的HTTP请求所经历的7个步骤 说明:HTTP通信机制是在一次完整的HTTP通信过程 ...
- Linux - 对比net-tools与iproute2
简介 net-tools包含ifconfig.route.arp和netstat等命令行工具,用于管理和排查各种网络配置. 起源于BSD TCP/IP工具箱,旨在配置老式Linux内核的网络功能. 自 ...
- MATLAB分类与预测算法函数
1.glmfit() 功能:构建一个广义线性回归模型. 使用格式:b=glmfit(X,y,distr),根据属性数据X以及每个记录对应的类别数据y构建一个线性回归模型,distr可取值为:binom ...