Rsync 服务部署与参数详解

Rsync 简介

rsync 是一款开源的、快速的、多功能的、可实现全量及增量本地或远程数据同步备份的优秀工具。Rsync软件适用于unix/linux/windows等多种操作系统平台。

传统的 scp 和 cp 工具拷贝每次均为完整拷贝,而rsync除了可以完整拷贝外,还具备增量拷贝功能。因此,从同步数据的性能及效率上,Rsync工具更胜一筹。

官网地址:

1 https://download.samba.org/pub/rsync/rsync.html
2 # 或者
3 https://www.samba.org/ftp/rsync/rsync.html

版本查看

 1 [[email protected] ~]$ rsync --version
 2 rsync  version 3.1.2  protocol version 31
 3 Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.
 4 Web site: http://rsync.samba.org/
 5 Capabilities:
 6     64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
 7     socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
 8     append, ACLs, xattrs, iconv, symtimes, prealloc
 9
10 rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
11 are welcome to redistribute it under certain conditions.  See the GNU
12 General Public Licence for details.

Rsync 增量复制的原理

Rsync 通过 “quick check” 算法 (默认情况) 找到要传输的文件,该算法会查找大小已改变最后修改时间已改变的文件。

当 “quick check” 指示不需要更新文件的数据 (即:文件的内容) 时,会直接在目标文件上更改其他属性(如权限信息、属主属组信息、时间戳信息)「根据相应的选项参数」。

rsync2.x对比方法,把所有文件比对一遍,然后进行同步。

rsync3.x对比方法,一边比对差异,一边对差异的部分进行同步。

Rsync 软件功能介绍

rsync == cp

1 # 拷贝 /etc/rpm 目录
2 [[email protected] ~]# cp -a /etc/rpm /tmp/
3 # 等价于
4 [[email protected] ~]# rsync -a /etc/rpm /tmp/

注意:cp -a 的参数意义和 rsync -a 的参数意义不一样。

rsync == scp

1 [[email protected] tmp]$ scp -pr [email protected]172.16.1.182:/etc/xml /tmp/
2 # 等价于
3 [[email protected] tmp]$ rsync -pr [email protected]172.16.1.182:/etc/xml /tmp/

rsync == rm
删除 /tmp/yum/ 目录下的所有文件和目录。【千万不要搞错目录】

1 [[email protected] tmp]$ rm -fr /tmp/yum/*
2 # 等价于
3 [[email protected] tmp]$ rsync -r --delete /tmp/zhang/ /tmp/yum/

其中 /tmp/zhang/ 目录下无任何文件

rsync == ls -l

1 [[email protected] tmp]$ ls -l /tmp/xml/catalog
2 -rw-r--r-- 1 yun yun 1171 Sep 18 16:08 /tmp/xml/catalog
3 # 类似于
4 [[email protected] tmp]$ rsync /tmp/xml/catalog
5 -rw-r--r--          1,171 2019/09/18 16:08:41 catalog

Rsync 特性介绍

1、支持拷贝特殊文件。如链接文件、设备等。
2、可以排除指定文件或目录的同步功能,相当于打包tar的排除功能。
3、可以做到保持源文件或目录的权限、时间、软链接、属主、属组等所有属性均不改变。
4、可实现增量同步。既只同步发生变化的数据,因此传输效率很高,tar -N。
5、可以使用 rcp、rsh、ssh 等方式来配合传输文件(rsync本身不对数据加密)。
6、可以通过socket(进程方式)传输文件和数据(服务端和客户端)【重点掌握】。
7、支持匿名或认证(无需系统用户)的进程传输,可以实现方便安全的进行数据备份及镜像。

Rsync 运用场景

数据备份

使用方式:cron + rsync 比如数据库备份,除了本地需要备份外,还需要通过 rsync 在专门的备份服务器上备份一份。

实时同步

使用方式:rsync + inotify 或 sersync 比如为了缓解服务器压力,我们需要将用户上传的图片放在多台服务器上【如果没有上 CDN】,这样高并发访问的时候可以分发到多台机器,减轻服务器压力。

又比如敏感数据不能丢失,那必须做实时备份。

Rsync 使用说明

Rsync 传输方式分三种

1、单个主机本地内部之间的数据传输(此时类似于 cp 的功能)

2、借助rcp,ssh等通道来传输数据(此时类似于 scp 的功能)

3、以守护进程方式传输数据(rsync 自身的重要功能)

 1 # 本地数据同步方式
 2 Local:  rsync [OPTION...] SRC... [DEST]
 3
 4 # 远程数据同步方式
 5 Access via remote shell:
 6  Pull: rsync [OPTION...] [[email protected]]HOST:SRC... [DEST]
 7  Push: rsync [OPTION...] SRC... [[email protected]]HOST:DEST
 8
 9 # 守护进程方式同步数据
10 Access via rsync daemon:
11  Pull: rsync [OPTION...] [[email protected]]HOST::SRC... [DEST]
12        rsync [OPTION...] rsync://[[email protected]]HOST[:PORT]/SRC... [DEST]
13  Push: rsync [OPTION...] SRC... [[email protected]]HOST::DEST
14        rsync [OPTION...] SRC... rsync://[[email protected]]HOST[:PORT]/DEST

源目录后面无 “/“ 和有 “/“ 的区别

将 /etc/yum 目录复制到 /tmp/zhang/ 目录下。

1 # 源目录后面无 "/"
2 [[email protected] ~]$ rsync -avz /etc/yum  /tmp/zhang/
3 [[email protected] ~]$ ll /tmp/zhang/
4 total 0
5 drwxr-xr-x 6 yun yun 100 Nov 14  2018 yum

将 /etc/yum/ 目录下的所有文件和目录,复制到 /tmp/zhang/ 目录下。

1 # 源目录后面有 "/"
2 [[email protected] ~]$ rsync -avz /etc/yum/  /tmp/zhang/
3 [[email protected] ~]$ ll /tmp/zhang/
4 total 4
5 drwxr-xr-x 2 yun yun   6 Apr 13  2018 fssnap.d
6 drwxr-xr-x 2 yun yun  54 Nov 14  2018 pluginconf.d
7 drwxr-xr-x 2 yun yun  26 Nov 14  2018 protected.d
8 drwxr-xr-x 2 yun yun  37 Apr 13  2018 vars
9 -rw-r--r-- 1 yun yun 444 Apr 13  2018 version-groups.conf

常用参数说明

参数 参数说明
-v, –verbose 显示传输了哪些文件 ★★★★★
-z, –compress 传输时进行压缩以提高传输效率,–compress-level=NUM 指定加压缩级别。★★★★★
-P, –progress 显示同步的过程及传输时进度等信息 ★★★★★
-a, –archive 归档模式,表示以递归方式传输文件,并保持文件属性。等价于 -rlptgoD ★★★★★
-r, –recursive 对子目录以递归模式,即目录下的所有目录都同样传输【归档于-a】
-t, –times 保持文件时间信息【归档于-a】
-o, –owner 保持文件属主信息【归档于-a】
-g, –group 保持文件属组信息【归档于-a】
-p, –perms 保持文件权限信息【归档于-a】
-D, –devieves 保持设备文件信息【归档于-a】
-l, –linkd 保持软链接信息【归档于-a】
-L, –copy-links 如果是链接文件那么转为源文件复制【复制软连接的源文件】
-e, –rsh=COMMAND 使用信道协议,指定替代rsh的shell程序
–exclude=PATTERN 指出哪些文件或目录不需要传输,支持通配符
–exclude-from=FILE 在 FILE 文件中指定哪些文件或目录不需要传输
–include=PATTERN 指出哪些文件或目录不被排除要传输,支持通配符;通常配合 –exclude 或 –exclude-from 使用
–include-from=FILE 在 FILE 文件中指定哪些文件或目录不被排除需要传输;通常配合 –exclude 或 –exclude-from 使用
–bwlimit=RATE 限速 限制I / O带宽;K字节每秒
–delete 让目标DEST目录与SRC目录数据一致 【慎用】

部分参数示例说明

1 # --exclude=PATTERN 示例
2 [[email protected] tmp]$ rsync -avz --exclude=systemd.conf /etc/yum  /tmp/zhang01
3 # 或者
4 [[email protected] tmp]$ rsync -avz --exclude=systemd.* /etc/yum  /tmp/zhang01
5 # 或者  多个条件使用多个 --exclude=PATTERN
6 [[email protected] tmp]$ rsync -avz --exclude=systemd.conf --exclude=fastestmirror.conf /etc/yum  /tmp/zhang05
1 # --exclude-from=FILE 示例
2 [[email protected] tmp]$ cat exclude.info
3 fastestmirror.conf
4 systemd.conf
5 vars
6
7 # 那么此时 fastestmirror.conf、systemd.conf 文件 和 vars 目录不会被拷贝
8 [[email protected] tmp]$ rsync -avz --exclude-from=exclude.info /etc/yum  /tmp/zhang01
1 # --include=PATTERN 示例
2 ## 注意参数顺序:--include 或 --include-from 必须要在 --exclude 或 --exclude-from 之前
3 [[email protected] tmp]$ rsync -avz --include=systemd* --exclude=*.conf /etc/yum /tmp/zhang02

Rsync 本地模式实践

Local:  rsync [OPTION...] SRC... [DEST]

示例如下:

rsync -avz /etc/yum  /tmp/zhang01

Rsync 使用远程 SSH 通道实践

1 Access via remote shell:
2  Pull: rsync [OPTION...] [[email protected]]HOST:SRC... [DEST]
3  Push: rsync [OPTION...] SRC... [[email protected]]HOST:DEST

拉取数据:将远程机器的数据复制到本地

[[email protected] ~]$ rsync -avzP -e ‘ssh -p 22‘ [email protected]172.16.1.182:/etc/yum /tmp/zhang01

推送数据:将本地的数据复制到远程机器

[[email protected] ~]$ rsync -avzP -e ‘ssh -p 22‘ /etc/yum [email protected]172.16.1.182:/tmp/zhang

Rsync daemon 服务模式实践

1 Access via rsync daemon:
2  Pull: rsync [OPTION...] [[email protected]]HOST::SRC... [DEST]
3        rsync [OPTION...] rsync://[[email protected]]HOST[:PORT]/SRC... [DEST]
4  Push: rsync [OPTION...] SRC... [[email protected]]HOST::DEST
5        rsync [OPTION...] SRC... rsync://[[email protected]]HOST[:PORT]/DEST

使用规划

1、backup 服务器作为 rsync 服务端

2、以 ansi-haproxy02 作为客户端,进行数据推拉。

rsync 服务端配置

系统环境信息

 1 [[email protected] ~]$ cat /etc/redhat-release
 2 CentOS Linux release 7.5.1804 (Core)
 3 [[email protected] ~]$ uname -a
 4 Linux backup 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
 5 [[email protected] ~]# rpm -qa | grep ‘rsync‘
 6 rsync-3.1.2-4.el7.x86_64
 7 [[email protected] ~]$ rsync --version  # 系统已默认安装,如果没有那自行安装下
 8 rsync  version 3.1.2  protocol version 31
 9 Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.
10 Web site: http://rsync.samba.org/
11 Capabilities:
12     64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
13     socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
14     append, ACLs, xattrs, iconv, symtimes, prealloc
15
16 rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
17 are welcome to redistribute it under certain conditions.  See the GNU
18 General Public Licence for details.

服务配置文件

注意:配置后面不要添加任何信息和空格,不然可能被解析,导致后续一系列问题。

 1 [[email protected] ~]# cat /etc/rsyncd.conf
 2 # 备注:更多参数与更多详解,参见  man rsyncd.conf
 3 #rsync_config---------------start
 4 uid = root
 5 gid = root
 6 use chroot = false
 7 max connections = 200
 8 timeout = 100
 9 pid file = /var/run/rsyncd.pid
10 lock file = /var/run/rsync.lock
11 log file = /var/log/rsyncd.log
12 dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
13 ignore errors = true
14 read only = false
15 list = false
16
17 ## 注意为了避免困惑 hosts allow 和 hosts deny 请二选其一
18 hosts allow = 172.16.1.0/24,10.9.0.0/16,120.27.48.179
19 # hosts deny = 10.0.0.0/16
20 # 支持多个认证账号
21 auth users = rsync_backup,rsync_db_back
22 secrets file = /etc/rsync.password
23
24
25 # 数据备份 注意 path 目录的权限信息
26 [back_data_module]
27 path = /backup/busi_data/
28
29 # 数据库备份 注意 path 目录的权限信息
30 [back_db_module]
31 path = /backup/database/
32
33 #rsync_config---------------end

配置文件详解

更多参数与详解,参见 man rsyncd.conf

 1 # 备注:更多参数与更多详解,参见  man rsyncd.conf
 2 # rsync_config---------------start
 3 # 可以是其他用户
 4 # 超级用户运行时的默认设置是切换到系统的“nobody”用户
 5 # 如果配置为 root 用户,这时可以同步属主信息
 6 # 非超级用户是不能同步属主信息的
 7 uid = root  # 其他主机通过 rsync 实现推拉时使用什么用户
 8 # 可以是其他用户组
 9 # 超级用户组运行时的默认设置是切换到系统的“nobody”用户组
10 # 如果配置为 root 用户组,这时可以同步属组信息
11 # 非超级用户组是不能同步属组信息的
12 gid = root  # 其他主机通过 rsync 实现推拉时使用什么用户组
13 # 如果为 true,安全性更高,但软连接文件「可能」同步不了
14 # 这是 rsync 的一个安全配置,由于我们大多数都是内网使用,所以可以不配置。建议 false
15 use chroot = false
16 max connections = 200  # 最大连接数
17 timeout = 100  # 超时时间
18 pid file = /var/run/rsyncd.pid   # 进程号文件
19 lock file = /var/run/rsync.lock  # 锁文件,防止文件不一致
20 log file = /var/log/rsyncd.log   # 日志文件
21 dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2  # 对哪些文件传输时不压缩【如果传输时我们指定了压缩参数】
22 ignore errors = true # 忽略错误
23 read only = false  # 在服务端可读写
24 list = false  # 不让列表,安全考虑
25
26 ## 注意为了避免困惑 hosts allow 和 hosts deny 请二选其一
27 hosts allow = 172.16.1.0/24,10.9.0.0/16,120.27.48.179  # 可访问的网段或IP,多个使用逗号分隔;其他的都不可访问
28 # hosts deny = 10.0.0.0/16  # 不可访问的网段或IP,多个使用逗号分隔;其他的都可以访问
29 # 支持多个认证账号
30 auth users = rsync_backup,rsync_db_back  # 其他主机连接时,校验的用户【虚拟用户】
31 secrets file = /etc/rsync.password       # 虚拟用户账号及密码
32
33
34 # 数据备份 注意 path 目录的权限信息
35 [back_data_module]
36 path = /backup/busi_data/
37
38 # 数据库备份 注意 path 目录的权限信息
39 [back_db_module]
40 path = /backup/database/
41
42 # rsync_config---------------end

uid、gid 详解

当 rsync 服务端的 uid、gid 用的是 rsync 用户和用户组【或其他非超级用户、用户组】时,客户端同步时只能同步数据信息、权限信息、时间戳信息,但不能同步属主、属组信息。此时客户端若要同步的数据属主、属组,那么客户端数据的属主、属组必须也是 rsync【即客户端与服务端的 uid、gid 相同】;或者不要同步属主、属组信息。

如果需要把多个文件且属主、属组不同的属性信息也同步到 rsync 服务端,那么在 rsync 服务端的 uid、gid 配置都应该是 root。

use chroot 详解

use chroot = true

需要 root 权限,且 rsync 在传输文件之前首先 chroot 到 path 参数所指定的目录下,然后再开始与客户端进行文件传输。
优点:可以提供额外的保护,防止可能的出现的安全漏洞
缺点:如果同步的数据有软连接,那么软连接「可能」同步不了

use chroot = false

出于安全原因,默认情况下使用 munge 符号链接,即所有的软连接前面多会加 /rsyncd-munged/,如下:

其他必要设置与配置

1、创建对应的目录

1 [[email protected] ~]# mkdir -p /backup/{busi_data,database}
2 [[email protected] ~]# ll /backup/
3 total 0
4 drwxr-xr-x 2 root root 6 Sep 20 14:54 busi_data
5 drwxr-xr-x 2 root root 6 Sep 20 14:54 database

2、rsync虚拟用户配置

1 [[email protected] ~]# ll /etc/rsync.password    # 注意文件的权限信息 600
2 -rw------- 1 root root 63 Sep 20 15:03 /etc/rsync.password
3 [[email protected] ~]#
4 [[email protected] ~]# cat /etc/rsync.password
5 rsync_backup:rsync_backup_pwd
6 rsync_db_back:rsync_db_back_pwd

启动/停止 Rsync 守护进程服务

 1 [[email protected] ~]# systemctl start rsyncd.service
 2 [[email protected] ~]# netstat -lntup | grep ‘rsync‘
 3 tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      2366/rsync
 4 tcp6       0      0 :::873                  :::*                    LISTEN      2366/rsync
 5 [[email protected] ~]# lsof -i :873
 6 COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
 7 rsync   2347 root    3u  IPv4  31366      0t0  TCP *:rsync (LISTEN)
 8 rsync   2347 root    5u  IPv6  31367      0t0  TCP *:rsync (LISTEN)
 9 [[email protected] ~]# ps -ef | grep ‘rsync‘
10 root       2366      1  0 10:59 ?        00:00:00 /usr/bin/rsync --daemon --no-detach
11 root       2571   1684  0 11:08 pts/0    00:00:00 grep --color=auto rsync

停止 rsync 服务

[[email protected] ~]# systemctl stop rsyncd.service

加入开机自启动

1 [[email protected] ~]# systemctl enable rsyncd.service   # 加入开机自启动
2 Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.
3 [[email protected] ~]# systemctl status rsyncd.service
4 ● rsyncd.service - fast remote file copy program daemon
5    Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; enabled; vendor preset: disabled)
6    Active: inactive (dead)

Rsync 客户端配置

系统环境信息

 1 [[email protected] ~]# cat /etc/redhat-release
 2 CentOS Linux release 7.5.1804 (Core)
 3 [[email protected] ~]# uname -a
 4 Linux ansi-haproxy02 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
 5 [[email protected] ~]# rpm -qa | grep ‘rsync‘
 6 rsync-3.1.2-4.el7.x86_64
 7 [[email protected] ~]# rsync --version
 8 rsync  version 3.1.2  protocol version 31
 9 Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.
10 Web site: http://rsync.samba.org/
11 Capabilities:
12     64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
13     socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
14     append, ACLs, xattrs, iconv, symtimes, prealloc
15
16 rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
17 are welcome to redistribute it under certain conditions.  See the GNU
18 General Public Licence for details.

密码文件

注意密码文件只能填写对应密码信息,不要有其他多余的字符,rsync 在读取时仅读取该文件的第一行信息。

1 [[email protected] ~]# ll /etc/rsync.password*    # 注意权限信息 600 或 400
2 -rw------- 1 root root 36 Sep 20 16:28 /etc/rsync.password
3 -rw------- 1 root root 19 Sep 24 11:30 /etc/rsync.password2
4 [[email protected] ~]# cat /etc/rsync.password
5 rsync_backup_pwd
6 [[email protected] ~]# cat /etc/rsync.password2
7 rsync_db_back_pwd

注意:客户端一个 password 文件不能存放多个密码,rsync 在读取文件的时候只会读取第一个密码。

客户端准备数据

 1 [[email protected] zhang]# pwd
 2 /tmp/zhang
 3 [[email protected] zhang]# cp -a /etc/yum ./
 4 [[email protected]haproxy02 zhang]# ll
 5 total 0
 6 drwxr-xr-x. 6 root root 100 Nov 14  2018 yum
 7 [[email protected] zhang]# touch stu{01..100}
 8 [[email protected] zhang]# ls
 9 stu001  stu008  stu015  stu022  stu029  stu036  stu043  stu050  stu057  stu064  stu071  stu078  stu085  stu092  stu099
10 stu002  stu009  stu016  stu023  stu030  stu037  stu044  stu051  stu058  stu065  stu072  stu079  stu086  stu093  stu100
11 stu003  stu010  stu017  stu024  stu031  stu038  stu045  stu052  stu059  stu066  stu073  stu080  stu087  stu094  yum
12 stu004  stu011  stu018  stu025  stu032  stu039  stu046  stu053  stu060  stu067  stu074  stu081  stu088  stu095
13 stu005  stu012  stu019  stu026  stu033  stu040  stu047  stu054  stu061  stu068  stu075  stu082  stu089  stu096
14 stu006  stu013  stu020  stu027  stu034  stu041  stu048  stu055  stu062  stu069  stu076  stu083  stu090  stu097
15 stu007  stu014  stu021  stu028  stu035  stu042  stu049  stu056  stu063  stu070  stu077  stu084  stu091  stu098

推拉数据

客户端向服务端推送数据

使用 rsync_backup 账号测试

情况1、需要校验用户密码

1 [[email protected] zhang]# rsync -avz /tmp/zhang [email protected]172.16.1.181::back_data_module
2 Password:
3 sending incremental file list
4 ………………
5 sent 6,202 bytes  received 2,070 bytes  1,504.00 bytes/sec
6 total size is 1,117  speedup is 0.14

情况2、不要密码【密码文件】

1 # 方式一
2 # 从本地推送到服务端 back_data_module 模块路径下
3 [[email protected] zhang]# rsync -avz --password-file=/etc/rsync.password /etc/yum [email protected]172.16.1.181::back_data_module
4 # 方式二
5 # 从本地推送到服务端 back_data_module 模块路径下的 zhang 目录下
6 [[email protected] zhang]# rsync -avz --password-file=/etc/rsync.password /etc/systemd rsync://[email protected]/back_data_module/zhang/

其中:back_data_module 为 rsync 配置中的模块名

客户端向服务端拉取数据

使用 rsync_db_back 账号测试

情况1:需要校验用户密码

1 [[email protected] test]# rsync -avz [email protected]172.16.1.181::back_data_module/zhang /tmp/test/
2 Password:
3 receiving incremental file list
4 …………

情况2、不要密码【密码文件】

1 # 方式一
2 # 从服务端 back_data_module 模块路径下的yum目录,拉取到本地 /tmp/test1/ 目录下
3 [[email protected] kkkk]# rsync -avz --password-file=/etc/rsync.password2 [email protected]172.16.1.181::back_data_module/yum /tmp/test1/
4 # 方式二
5 # 从服务端 back_data_module 模块路径下的yum目录,拉取到本地 /tmp/test2/ 目录下
6 [[email protected] tmp]# rsync -avz --password-file=/etc/rsync.password2 rsync://[email protected]/back_data_module/yum /tmp/test2/

其中:back_data_module 为 rsync 配置中的模块名

注意点:

客户端路径末尾是否有 /

“/” 有:则表示推送该目录下的所有文件

“/” 无:则表示推送该目录,与该目录下所有文件

目标一端可以加一个不存在的目录

类似 cp 命令一样,我们可以在目标一端指定一个目录

推送时,目标一端有该目录则直接使用;没有则创建

Rsync 常见问题

故障点1:客户端密码文件属主不对

客户端以哪个用户执行命令,那么 password-file 文件的属主就是哪个用户。
当然为了安全起见,客户端的 password-file 文件属主最好是 root ,这时我们执行命令也用 root 用户。

1 [[email protected] ~]# rsync -avz --password-file=/etc/rsync.password2 /etc/yum [email protected]172.16.1.181::back_db_module
2 ERROR: password file must be owned by root when running as root
3 rsync error: syntax or usage error (code 1) at authenticate.c(200) [sender=3.1.2]

故障点2:客户端密码文件权限不对

客户端的 password-file 文件权限是 600 或 400。

1 [[email protected] ~]# rsync -avz --password-file=/etc/rsync.password2 /etc/yum [email protected]172.16.1.181::back_db_module
2 ERROR: password file must not be other-accessible
3 rsync error: syntax or usage error (code 1) at authenticate.c(196) [sender=3.1.2]

故障点3:客户端用户执行权限不足

客户端用户执行权限不足,不能读取 password-file 文件信息。
当前使用 yun 用户,实际需要 root 用户。

1 [[email protected] ~]$ rsync -avz --password-file=/etc/rsync.password2 /etc/yum [email protected]172.16.1.181::back_db_module
2 rsync: could not open password file /etc/rsync.password2: Permission denied (13)
3 rsync error: syntax or usage error (code 1) at authenticate.c(187) [sender=3.1.2]

故障点4:服务端没有对应的模块目录

服务端 back_db_module 模块的 path 路径不存在。

1 [[email protected] ~]# rsync -avz --password-file=/etc/rsync.password2 /etc/yum [email protected]172.16.1.181::back_db_module
2 @ERROR: chdir failed
3 rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]

故障点5:客户端密码不正确

客户端 password-file 文件的密码信息与服务端的密码不匹配,不能通过验证。

1 [[email protected] ~]# rsync -avz --password-file=/etc/rsync.password2 /etc/yum [email protected]172.16.1.181::back_db_module
2 @ERROR: auth failed on module back_db_module
3 rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]

故障点6:服务端目录不存在

服务端只能创建一级不存在的目录,不能创建二级及以上不存在的目录。

1 [[email protected] ~]# rsync -avz --password-file=/etc/rsync.password2 /etc/yum [email protected]172.16.1.181::back_db_module/aaa/bbb
2 sending incremental file list
3 rsync: mkdir "aaa/bbb" (in back_db_module) failed: No such file or directory (2)
4 rsync error: error in file IO (code 11) at main.c(657) [Receiver=3.1.2]


如果觉得不错就点个赞呗 (-^O^-) !

——————————END——————————

原文地址:https://www.cnblogs.com/zhanglianghhh/p/11590244.html

时间: 2024-10-06 19:28:48

Rsync 服务部署与参数详解的相关文章

redis服务部署及配置详解

Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集合和有序集合.支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能.所以Redis也可以被看成是一个数据结构服务器. Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为"半持久化模式"):也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为"全

rsync配置文件和命令参数详解

环境: Centos 6.5 x64 rsync 3.0 一.服务器端配置: # yum -y install xinetd #yum -y install rsync 然后配置rsync rsync服务需要三个文件 rsyncd.conf rsync服务的配置文件 rsyncd.secrets rsync服务的用户密码保存文件 用户必须为服务器上存在的用户 rsyncd.motd rsync服务的登陆提示信息 为了密码的安全 rsyncd.secrets的权限需要修改为600 chmod 06

rsync参数详解、利用ssh、rsync 实现数据的定时同步

rsync 简介 rsync(remote synchronize)是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机之间的文 件.也可以使用 rsync 同步本??硬盘中的不同目录. rsync 是用于替代 rcp 的一个工具,rsync 使用所谓的 rsync算法 进行数据同步,这种算法只传送两个文件 的不同部分,而不是每次都整份传送,因此速度相当快.您可以参考 How Rsync Works A PracticalOverview 进一步了解 rsync 的运作机制. rsy

【DataGuard】部署Data Guard相关参数详解 (转载)

原文地址:[DataGuard]部署Data Guard相关参数详解 作者:secooler 有关物理Data Guard部署参考<[DataGuard]同一台主机实现物理Data Guard配置安装>(http://space.itpub.net/519536/viewspace-578181),本文对部署Data Guard过程中主备库使用到的参数进行比较描述. 1.DB_NAME,数据库名字,需要保持同一个Data Guard 中所有数据库DB_NAME相同primary端和standb

Haproxy均衡负载部署和配置文件详解

HAproxy均衡负载部署和配置文件详解 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.根据官方数据,其最高极限支持10G的并发. HAProxy特别适用于那些负载特大的web站点, 这些站点通常又需要会话保持或七层处理.HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上. 其支持从4层至7层的网络

Nginx内置变量以及日志格式变量参数详解

Nginx内置变量以及日志格式变量参数详解 $args #请求中的参数值 $query_string #同 $args $arg_NAME #GET请求中NAME的值 $is_args #如果请求中有参数,值为"?",否则为空字符串 $uri #请求中的当前URI(不带请求参数,参数位于$args),可以不同于浏览器传递的$request_uri的值,它可以通过内部重定向,或者使用index指令进行修改,$uri不包含主机名,如"/foo/bar.html". $d

MySQL配置文件mysql.ini参数详解、MySQL性能优化

MySQL配置文件mysql.ini参数详解.MySQL性能优化 my.ini(Linux系统下是my.cnf),当mysql服务器启动时它会读取这个文件,设置相关的运行环境参数. my.ini分为两块:Client Section和Server Section.   Client Section用来配置MySQL客户端参数.   要查看配置参数可以用下面的命令: show variables like '%innodb%'; # 查看innodb相关配置参数 show status like

httpUrlConnection的参数详解

post方式的的请求过程: // 设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在 // http正文内,因此需要设为true, 默认情况下是false; httpUrlConnection.setDoOutput(true); // 设置是否从httpUrlConnection读入,默认情况下是true; httpUrlConnection.setDoInput(true); // Post 请求不能使用缓存 httpUrlConnection.setUse

开机启动服务:chkconfig命令详解

1.查看系统运行级别 # cat /etc/inittab # Default runlevel. The runlevels used are:#   0 - halt (Do NOT set initdefault to this)#   1 - Single user mode#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)#   3 - Full multiuser mode#