Rsync学习之旅中
rsync配置文件详解
配置文件内容说明
man rsyncd.conf
全局参数
| rsyncd.conf参数 | 参数说明 | 
|---|---|
| uid=rsync | 运行rsync守护进程的用户。 | 
| gid=rsync | 运行rsync用户组(用户所在的组) | 
| use chroot=no | 如果为true,daemon会在客户端传输文件前“chroot to the path”。这是一种安全配置,因为我们大多数都在内网,所以不配也没关系 | 
| max connections=200 | 设置最大连接数,默认0,意思无限制,负值为关闭这个模块 | 
| strict modes=yes | 是否检查口令文件的权限 | 
| port=873 | 默认端口873 | 
| timeout=400 | 默认为0,表示no timeout,建议300-600(5-10分钟) | 
| pid file | rsync daemon启动后将其进程pid写入此文件。如果这个文件存在,rsync不会覆盖该文件,而是会终止 | 
| lock file | 指定lock文件用来支持“max connections”参数,使得总连接数不会超过限制 | 
| log file | 不设或者设置错误,rsync会使用rsyslog输出相关日志信息 | 
| motd file | “motd file”参数用来指定一个消息文件,当客户连接服务器时该文件的内容显示给客户,默认没有motd文件 | 
模块参数
| rsyncd.conf参数 | 参数说明 | 
|---|---|
| ignore errors | 忽略无关的I/O错误 | 
| read only=false | 指定客户端是否可以上传文件,默认对所有模块为true | 
| list=false | 是否允许客户端可以查看可用模块列表,默认为可以 | 
| hosts allow | 指定可以联系的客户端主机名或和ip地址或地址段,默认情况没有此参数,即都可以连接 | 
| hosts deny | 指定不可以联系的客户端主机名或ip地址或地址段,默认情况没有此参数,即都可以连接 | 
| auth users | 指定以空格或逗号分隔的用户可以使用哪些模块,用户不需要在本地系统中存在。默认为所有用户无密码访问 | 
| secrets file | 指定用户名和密码存放的文件,格式;用户名;密码,密码不超过8位 | 
| [backup] | 这里就是模块名称,需用中括号扩起来,起名称没有特殊要求,但最好是有意义的名称,便于以后维护 | 
| comment | 模块注释信息 | 
| path | 这个模块中,daemon使用的文件系统或目录,目录的权限要注意和配置文件中的权限一致,否则会遇到读写的问题 | 
定义变量信息实现免密钥交互
添加环境变量
export RSYNC_PASSWORD=vicodona123
测试
[root@mico ~]# export RSYNC_PASSWORD=vicodona123
[root@mico ~]# rsync -azvP /root/practices/tmp/1.txt rsync_backup@47.107.108.121::backup
sending incremental file list
sent 48 bytes  received 20 bytes  136.00 bytes/sec
total size is 0  speedup is 0.00
守护进程多模块功能配置
第一步:编写配置信息创建多模块
[root@vicodona ~]# vim /etc/rsyncd.conf
......
[micodata]
comment = "micodata dir by vicodona"
path = /backup/micodata
[micobackup]
comment = "micobackup dir by vicodona"
path = /backup/micobackup
第二步:创建多模块指定的目录
[root@vicodona xinetd.d]# mkdir /backup/mico{data,backup} -p
[root@vicodona xinetd.d]# chown rsync.rsync /backup/mico{data,backup}
第三步:利用rsync客户端进行测试
[root@mico ~]# rsync -azv /root/practices/tmp/ rsync_backup@47.107.108.121::backup --password-file=/etc/rsync.passwd
sending incremental file list
./
1.txt
sent 107 bytes  received 46 bytes  306.00 bytes/sec
total size is 0  speedup is 0.00
说明
rsyncd.conf配置文件中,添加多模块信息,可以不用重启rsync服务,即时生效~
全局变量参数针对所有模块生效;局部变量参数只针对指定模块生效
read only参数默认配置为ture,即为只读模式
全局变量发生变化,不用重启rsync服务;局部变量发生变化,需要重启rsync服务
【说明】无论是全局变量发生变化,还是局部变量发生变化,都建议重启rsync服务使配置生效
守护进程的排除功能实践
排除的方式
- --exclude=要配置的目录或文件名称
 - --exclude-from=要排除多个目录或文件汇总文件名称
+在配置文件中进行修改,指定要排除的信息 
--exclude 排除测试
第一步:,创建模拟测试环境
[root@mico data]# mkdir {a..d}
[root@mico data]# touch {a..d}/{1..3}.txt
[root@mico data]# tree
.
├── a
│   ├── 1.txt
│   ├── 2.txt
│   └── 3.txt
├── b
│   ├── 1.txt
│   ├── 2.txt
│   └── 3.txt
├── c
│   ├── 1.txt
│   ├── 2.txt
│   └── 3.txt
└── d
    ├── 1.txt
    ├── 2.txt
    └── 3.txt
4 directories, 12 files
第二步:利用--exclude 参数测试排除功能
需求:不要a目录中的3.txt 也不要b、c目录
[root@mico data]# rsync -avz /root/practices/data/ --exclude=a/3.txt --exclude=b --exclude=c rsync_backup@47.107.108.121::micodata
sending incremental file list
./
a/
a/1.txt
a/2.txt
d/
d/1.txt
d/2.txt
d/3.txt
sent 372 bytes  received 134 bytes  1,012.00 bytes/sec
total size is 0  speedup is 0.00
精简方式排除
[root@mico data]# rsync -avz /root/practices/data/ --exclude=a/3.txt  --exclude={b,c} rsync_backup@47.107.108.121::micodata
sending incremental file list
./
a/
a/1.txt
a/2.txt
d/
d/1.txt
d/2.txt
d/3.txt
sent 372 bytes  received 134 bytes  1,012.00 bytes/sec
total size is 0  speedup is 0.00
利用--exclude-from方式进行排除
第一步:创建模拟测试环境
[root@mico data]# mkdir {a..d}
[root@mico data]# touch {a..d}/{1..3}.txt
第二步:进行排除
# 将需要排除的文件写入delete.txt文件
[root@mico data]#  vim delete.txt
a/1.txt
b/2.txt
c/3.txt
[root@mico data]# rsync -avz /root/practices/data/ --exclude-from=/root/practices/data/delete.txt rsync_backup@47.107.108.121::micodata
sending incremental file list
./
delete.txt
a/
a/2.txt
a/3.txt
b/
b/1.txt
b/3.txt
c/
c/1.txt
c/2.txt
d/
d/1.txt
d/2.txt
d/3.txt
sent 716 bytes  received 241 bytes  638.00 bytes/sec
total size is 26  speedup is 0.03
说明:
- 排除文件中,需要利用相对路径指定排除信息(不能利用绝对路径)
 - 相对路径指的是相对同步的目录信息而言,是对rsync -avz /data/ 后面的data目录进行相对
 
在配置文件中修改要排除的文件
第一步:编写修改服务端配置文件
vim /etc/rsyncd.conf
[nfsdata]
comment = "micodata dir by vicodona"
path = /backup/micodata
exclude=a/3.txt b c
第二步:重启rsync服务
[root@vicodona micodata]# systemctl restart rsyncd
[root@vicodona micodata]# rsync --daemon
第三步:进行测试
[root@mico data]# rsync -avz /root/practices/data/  rsync_backup@47.107.108.121::micodata
sending incremental file list
./
delete.txt
ERROR: daemon refused to receive file "a/3.txt"
ERROR: daemon refused to receive directory "b"
*** Skipping any contents from this failed directory ***
ERROR: daemon refused to receive directory "c"
*** Skipping any contents from this failed directory ***
a/
a/1.txt
a/2.txt
d/
d/1.txt
d/2.txt
d/3.txt
sent 617 bytes  received 435 bytes  701.33 bytes/sec
total size is 26  speedup is 0.02
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]
守护进程来创建备份目录
通过客户端命令创建服务端备份目录中子目录
# 推送/root/practices/data/a/delete.txt 文件到服务器 /backup/sda 目录
[root@mico practices]# rsync -avzP /root/practices/data/delete.txt rsync_backup@47.107.108.121::backup/sda
sending incremental file list
delete.txt
             26 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
sent 116 bytes  received 43 bytes  318.00 bytes/sec
total size is 26  speedup is 0.16
查看同步结果
[root@vicodona backup]# ll sda/
total 4
-rw-r--r-- 1 rsync rsync 26 Jul 15 16:06 delete.txt
说明:
a 目标目录名称后要加上 "/", 表示创建目录,否则变为修改传输文件名称了
b 利用客户端创建服务备份子目录时,只能创建一级子目录。
守护进程的访问控制配置
第一步:在服务端配置文件,编写白名单策略或黑名单策略(只能取其一)
[root@vicodona backup]# cat /etc/rsyncd.conf
hosts allow = 47.107.108.0/24
# hosts deny = 0.0.0.0/32
关于访问控制说明:
- 白名单和黑名单同时存在时,默认控制策略为不匹配的传输数据信息全部放行
 - 白名单单一存在时,默认控制策略为不匹配的传输数据信息全部禁止
 - 黑名单单一存在时,默认控制策略为不匹配的传输数据信息全部放行
 
守护进程无差异同步配置
什么是无差异
- 推模式:我有什么,你就有什么;我没有,你也不能有
 - 拉模式:你有什么,我就有什么;你没有,我也不能有
总结:服务端客户端数据完全一致(一模一样) 
实现无差异同步的方法
第一步: 建实验环境
[root@mico practices]# ll  data/
总用量 20
drwxr-xr-x 2 root root 4096 7月  15 15:42 a
drwxr-xr-x 2 root root 4096 7月  15 15:42 b
drwxr-xr-x 2 root root 4096 7月  15 15:42 c
drwxr-xr-x 2 root root 4096 7月  15 15:42 d
-rw-r--r-- 1 root root   26 7月  15 16:06 delete.txt
第二步:进行第一次数据同步
[root@mico practices]# rsync -avz --delete /root/practices/data/ rsync_backup@47.107.108.121::backup/micodata/
sending incremental file list
./
delete.txt
a/
a/1.txt
a/2.txt
a/3.txt
b/
b/1.txt
b/2.txt
b/3.txt
c/
c/1.txt
c/2.txt
c/3.txt
d/
d/1.txt
d/2.txt
d/3.txt
sent 879 bytes  received 298 bytes  2,354.00 bytes/sec
total size is 26  speedup is 0.02
第三步:删除指定目录,并添加指定文件,测试无差异功能
# 删除客户端中的 a/ 目录,再进行无差异传输
[root@mico data]# rm -rf a/
[root@mico data]# rsync -avz --delete /root/practices/data/ rsync_backup@47.107.108.121::backup/micodata/
Password:
sending incremental file list
deleting a/3.txt
deleting a/2.txt
deleting a/1.txt
deleting a/
./
sent 300 bytes  received 69 bytes  82.00 bytes/sec
total size is 26  speedup is 0.07
第四步:查看服务端的数据同步情况
[root@mico data]# ll
总用量 16
drwxr-xr-x 2 root root 4096 7月  15 15:42 b
drwxr-xr-x 2 root root 4096 7月  15 15:42 c
drwxr-xr-x 2 root root 4096 7月  15 15:42 d
-rw-r--r-- 1 root root   26 7月  15 16:06 delete.txt
可以看见,a目录下的数据已经同步删除
【注意】无差异同步方法对应用
实现存储数据与备份数据完全一致(慎用)
rsync -avz --delete  /data/ rsync_backup@47.107.108.121::backup /
快速删除大文件数据
 1.mkdir /null      --创建出一个空目录。
 2.rsync -avz --delete /null/ /bigdata/
  # 删除效率高于 rm -rf /bigdata
守护进程的列表功能配置
第一步:在服务端配置文件中开启list列表功能
[root@vicodona ~]# vim /etc/rsyncd.conf
list = true
第二步:客户端查看服务端模块信息
[root@vicodona ~]# systemctl stop rsyncd
[root@vicodona ~]# rsync --daemon
第三步:客户端查看服务端模块信息
[root@mico data]# rsync  rsync_backup@47.107.108.121::
backup                    "backup dir by vicodona"
micodata                 "micodata dir by  vicodona"
micobackup            "micobackup dir by vicodona"
为了提升备份服务器安全性,建议关闭list列表功能
服务端常见问题
问题一
@ERROR: chroot failed
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
【原因】服务器端的目录不存在或无权限,创建目录并修正权限可解决问题。
问题二
@ERROR: auth failed on module tee
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
【原因】服务器端该模块(tee)需要验证用户名密码,但客户端没有提供正确的用户名密码,认证失败。
提供正确的用户名密码解决此问题。
问题三
@ERROR: Unknown module ‘tee_nonexists’
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
【原因】服务器不存在指定模块。提供正确的模块名或在服务器端修改成你要的模块以解决问题。
问题四
password file must not be other-accessible
continuing without password file
Password:
【解决】这是因为rsyncd.pwd rsyncd.secrets的权限不对,应该设置为600。如:chmod 600 rsyncd.pwd
问题五
rsync: failed to connect to 218.107.243.2: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]
【解决】对方没开机、防火墙阻挡、通过的网络上有防火墙阻挡,都有可能。关闭防火墙,其实就是把tcp udp的873端口打开。
问题六
rsync error: error starting client-server protocol (code 5) at main.c(1524) [Receiver=3.0.7]
【解决】/etc/rsyncd.conf配置文件内容有错误。请正确核对配置文件。
问题七
rsync: chown "" failed: Invalid argument (22)
【解决】权限无法复制。去掉同步权限的参数即可。(这种情况多见于Linux向Windows的时候)
问题八:
@ERROR: daemon security issue -- contact admin
rsync error: error starting client-server protocol (code 5) at main.c(1530) [sender=3.0.6]
【原因】
同步的目录里面有软连接文件,需要服务器端的/etc/rsyncd.conf打开use chroot = yes。掠过软连接文件。
问题九:
ERROR: module is read only
rsync error: syntax or usage error (code 1) at main.c(747) [receiver=2.6.8]
rsync: connection unexpectedly closed (4 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]
【解决】 提示打开了read only,将配置文件 read only = no
问题十:
cat /var/log/rsyncd.log
2011/12/14 11:58:37 [22377] name lookup failed for XX.XX.XX.XX: Name or service not known
2011/12/14 11:58:37 [22377] connect from UNKNOWN (XX.XX.XX.XX)
2011/12/14 11:58:37 [22377] rsync to html/ from unknown (XX.XX.XX.XX)
【解决】需要在服务端这台机上上的/etc/hosts里面添加客户端机的ip和机器名
问题十一:
[root@Dell-R710 ~]# rsync -artuz -R --delete ./ 192.168.1.233::gex
rsync: failed to connect to 61.145.118.206: Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]
【解决】
一、查看防火墙
二、查看服务端是否开启守护进程
ps ax|grep rsync
rsync --daemon --config=/etc/rsyncd.conf
客户端常见问题
问题一
rsync -auzv --progress --password-file=/etc/rsync.pas root@192.168.133.128::backup /home/
rsync: could not open password file "/etc/rsync.pas": No such file or directory (2)
Password:
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]
【说明】遇到这个问题:client端没有设置/etc/rsync.pas这个文件,而在使用rsync命令的时候,加了这个参数--
password-file=/etc/rsync.pas
问题二
rsync -auzv --progress --password-file=/etc/rsync.pas root@192.168.133.128::backup /home/
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]
【说明】遇到这个问题:client端已经设置/etc/rsync.pas这个文件,里面也设置了密码111111,和服务器一致,但是
服务器段设置有错误,服务器端应该设置/etc/rsync.pas  ,里面内容root:111111 ,这里登陆名不可缺少
问题三
rsync -auzv --progress --password-file=/etc/rsync.pas root@192.168.133.128::backup /home/
@ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]
【说明】遇到这个问题,是因为服务器端的/home/backup 其中backup这个目录并没有设置,所以提示:chdir failed
问题四:
rsync: write failed on "/home/backup2010/wensong": No space left on device (28)
rsync error: error in file IO (code 11) at receiver.c(302) [receiver=3.0.7]
rsync: connection unexpectedly closed (2721 bytes received so far) [generator]
rsync error: error in rsync protocol data stream (code 12) at io.c(601) [generator=3.0.7]
【说明】磁盘空间不够,所以无法操作。
可以通过df /home/backup2010 来查看可用空间和已用空间
问题五:网络收集问题
1、权限问题
类似如下的提示:rsync: opendir "/kexue" (in dtsChannel) failed: Permission denied (13)注意查看同步的目录权限是否为755
2、time out
rsync: failed to connect to 203.100.192.66: Connection timed out (110)
rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.5]
【说明】检查服务器的端口netstat –tunlp,远程telnet测试。
3、服务未启动
rsync: failed to connect to 10.10.10.170: Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.5]
【说明】启动服务:rsync --daemon --config=/etc/rsyncd.conf
4、磁盘空间满
rsync: recv_generator: mkdir "/teacherclubBackup/rsync……" failed: No space left on device (28)
*** Skipping any contents from this failed directory ***
5、Ctrl+C或者大量文件
rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(544) [receiver=3.0.5]
rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(544) [generator=3.0.5]
6、xnetid启动
rsync: read error: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(759) [receiver=3.0.5]
查看rsync日志
rsync: unable to open configuration file "/etc/rsyncd.conf": No such file or directory
xnetid查找的配置文件位置默认是/etc下,根据具体情况创建软链接。例如:
ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf
或者更改指定默认的配置文件路径,在/etc/xinetd.d/rsync配置文件中
Rsync学习之旅中的更多相关文章
- Rsync学习之旅上
		
rsync 简介 什么是rsync rsync是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具. 全量:将全部数据,进行传输覆盖 增量:只传输差异部分的数据 实现增量 ...
 - ROS2学习之旅(4)——理解ROS2 Graph中的节点
		
ROS(2)图(ROS(2) graph)是一个同时处理数据的基于ROS2元素的网络,它包含了所有的可执行文件以及它们之间的连接.图中的基本元素包括:节点(nodes).话题(topics).服务(s ...
 - WCF学习之旅—第三个示例之四(三十)
		
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) WCF学习之旅—第三个示例之三(二十九) ...
 - Hadoop学习之旅二:HDFS
		
本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...
 - WCF学习之旅—第三个示例之二(二十八)
		
上接WCF学习之旅—第三个示例之一(二十七) 五.在项目BookMgr.Model创建实体类数据 第一步,安装Entity Framework 1) 使用NuGet下载最新版的Entity Fram ...
 - WCF学习之旅—第三个示例之三(二十九)
		
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) 在上一篇文章中我们创建了实体对象与接口协定,在这一篇文章中我们来学习如何创建WCF的服务端代码.具体步骤见下面. ...
 - WCF学习之旅—WCF服务部署到IIS7.5(九)
		
上接 WCF学习之旅—WCF寄宿前的准备(八) 四.WCF服务部署到IIS7.5 我们把WCF寄宿在IIS之上,在IIS中宿主一个服务的主要优点是在发生客户端请求时宿主进程会被自动启动,并且你可以 ...
 - WCF学习之旅—WCF服务部署到应用程序(十)
		
上接 WCF学习之旅—WCF寄宿前的准备(八) WCF学习之旅—WCF服务部署到IIS7.5(九) 五.控制台应用程序宿主 (1) 在解决方案下新建控制台输出项目 ConsoleHosting.如下 ...
 - WCF学习之旅—WCF服务的Windows 服务程序寄宿(十一)
		
上接 WCF学习之旅—WCF服务部署到IIS7.5(九) WCF学习之旅—WCF服务部署到应用程序(十) 七 WCF服务的Windows 服务程序寄宿 这种方式的服务寄宿,和IIS一样有一个一样 ...
 
随机推荐
- A@GC*014
			
A@GC*014 A Cookie Exchanges 卡时跑了1s就输出-1 每次操作会使三个数的极差缩小一半,所以最多\(\log\)次之后就会出现\(A=B=C\)的情况,可以直接判掉 B Un ...
 - 你知道多少this,new,bind,call,apply?那我告诉你
			
那么什么是this,new,bind,call,apply呢?这些你都用过吗?掌握这些内容都是基础中的基础了.如果你不了解,那还不赶快去复习复习,上网查阅资料啥的! 通过call,apply,bind ...
 - 【牛客】路径计数机 (树形dp 前缀和)
			
题目描述 有一棵n个点的树和两个整数p, q,求满足以下条件的四元组(a, b, c, d)的个数: 1.$1\leq a,b,c,d \leq n$ 2.点a到点b的经过的边数为p. 3.点c ...
 - 简单与实用:SpringMVC的常见使用
			
一.前言 现在的项目大多数都是使用SpringMVC作为MVC框架.SpringMVC的学习成本较低,容易上手,简单实用. 二.应用 1.@Controller & @RequestMappi ...
 - 【技术博客】 关于laravel5.1中文件上传测试的若干尝试
			
关于laravel5.1中文件上传测试的若干尝试 作者:ZGJ 版本:v1.0 PM注:本人这两天也正在尝试解决这一问题,如有进展将及时更新这一博客 在我们的软工第二阶段中,我开始着手进行后端控制器的 ...
 - 【Gamma阶段】第二次Scrum Meeting
			
冰多多团队-Gamma阶段第二次Scrum会议 工作情况 团队成员 已完成任务 待完成任务 卓培锦 修改可移动button以及button手感反馈优化 编辑器风格切换(夜间模式) 牛雅哲 语音输入sh ...
 - Sql中substr的使用
			
pandas和SQL数据分析实战 https://study.163.com/course/courseMain.htm?courseId=1006383008&share=2&sha ...
 - 【WPF】通过修改dataGrid的cell的style,改变选中行失去焦点时的颜色
			
<Style TargetType="{x:Type DataGridCell}"> <Style.Triggers> <Trigger Proper ...
 - cisco 路由与ASA SSH 设置
			
转载于https://www.cnblogs.com/sun292393989/p/8980700.html 一 试验拓扑 二 Server配置 ①配置hostname和domain name 因为r ...
 - 使用VEGAS2(Versatile Gene-based Association Study)进行gene based的关联分析研究
			
gene-based关联分析研究是SNP-based关联分析研究的一个补充. 目前有很多工具支持gene-based关联分析研究,比如GCTA,VEGAS2等. 下面主要介绍一下怎么用VEGAS2做g ...