三、rsycn配置文件详解 rsyncd.conf

1 部分知识补充

1.1 配置文件内容参考资料
  1. man rsyncd.conf
复制代码

1.2 配置文件内容总结


模块之上内容为全局变量信息

模块之下内容为局部变量信息

说明:

无论是全局变量发生变化,还是局部变量发生变化,都建议重启rsync服务使配置生效。

2 利用/etc/init.d/启动rsync服务方式

2.1 可以实现方式:

a. 编写rsync启动脚本(有一定的shell能力 if case)

b. 利用xinetd服务,管理启动rsync服务

2.2 利用 xinetd服务 管理rsync

第一个里程碑: 安装xinetd软件
  1. [root@backup ~]# yum install -y xinetd
  2. [root@backup ~]# rpm -qa |grep xin
  3. xinetd-2.3.14-40.el6.x86_64
复制代码

第二个里程碑:编辑配置文件

修改disable = yes 改为disable = no
  1. [root@backup ~]# vim /etc/xinetd.d/rsync
  2. # default: off
  3. # description: The rsync server is a good addition to an ftp server, as it \
  4. #   allows crc checksumming etc.service rsync
  5. {
  6. disable   = no
  7. flags     = IPv6
  8. socket_type     = stream
  9. wait            = no
  10. user            = root
  11. server          = /usr/bin/rsync
  12. server_args     = --daemon
  13. log_on_failure  += USERID
  14. }
复制代码

第三个里程碑:重启xinetd服务
  1. [root@backup ~]# /etc/init.d/xinetd restart
  2. Stopping xinetd:                                           [  OK  ]
  3. Starting xinetd:                                           [  OK  ]
复制代码

传输测试
  1. [root@nfs01 ~]# rsync -avzP /etc/services rsync_backup@172.16.1.41::backup --
  2. password-file=/etc/rsync.password
  3. sending incremental file list
  4. sent 29 bytes  received 8 bytes  74.00 bytes/sec
  5. total size is 641020  speedup is 17324.86
复制代码

3 定义变量信息实现免秘钥交互

3.1 通过man手册获得方法
  1. Some  modules  on the remote daemon may require authentication. If so, you will receive a password prompt when you connect.  You  can avoid  the  password  prompt  by  setting the environment variable RSYNC_PASSWORD to the password  you  want  to  use  or  using  the --password-file option. This may be useful when scripting rsync.
  2. WARNING:  On some systems environment variables are visible to all users. On those systems using --password-file is recommended.
复制代码

在远程进程的一些模块可能需要认证。如果是这样的话,你将得到一个密码提示当您连接。你可以通过设置环境变量rsync_password要使用或使用密码文件选项密码避免密码提示。这可能是有用的脚本文件。

警告:在一些系统环境变量,对所有用户都是可见的。在这些系统中使用的密码文件的建议。

3.2 使用 RSYNC_PASSWORD 变量实现免交互

未设置变量之前
  1. [root@nfs01 ~]# rsync -avzP /etc/services rsync_backup@172.16.1.41::backup
  2. Password:
复制代码

添加上环境变量
  1. [root@nfs01 ~]# export RSYNC_PASSWORD=oldboy123
复制代码

测试
  1. [root@nfs01 ~]# rsync -avzP /etc/services rsync_backup@172.16.1.41::backup
  2. sending incremental file list
  3. sent 29 bytes  received 8 bytes  24.67 bytes/sec
  4. total size is 641020  speedup is 17324.86
复制代码

4 守护进程多模块功能配置

第一个里程碑: 编写配置信息创建多模块
  1. [root@backup ~]# vim /etc/rsyncd.conf
  2. ……
  3. [nfsdata]
  4. comment = "nfsdata dir by oldboy"
  5. path = /backup/nfsdata
  6. [nfsbackup]
  7. comment = "nfsbackup dir by oldboy"
  8. path = /backup/nfsbackup
复制代码

第二个里程碑: 创建多模块指定的目录
  1. # 创建目录,并修改目录的权限
  2. [root@backup ~]# mkdir /backup/nfs{data,backup} -p
  3. [root@backup ~]# chown rsync.rsync  /backup/nfs{data,backup}
复制代码
  1. #查看:
  2. [root@backup ~]# ll /backup/nfs{data,backup} -d
  3. drwxr-xr-x 2 rsync rsync 4096 Oct 12 10:05 /backup/nfsbackup
  4. drwxr-xr-x 2 rsync rsync 4096 Oct 12 10:05 /backup/nfsdata
复制代码

第三里程碑: 利用rsync客户端进行测试
  1. [root@nfs01 ~]# rsync -avz /data/ rsync_backup@172.16.1.41::nfsdata --password-file=/etc/rsync.passsword
  2. sending incremental file list
  3. ./
  4. nfs.data
  5. sent 78 bytes  received 30 bytes  216.00 bytes/sec
  6. total size is 0  speedup is 0.00
复制代码

说明:

rsyncd.conf配置文件中,添加多模块信息,可以不用重启rsync服务,即时生效~

全局变量参数针对所有模块生效;局部变量参数只针对指定模块生效

read only参数默认配置为ture,即为只读模式

全局变量发生变化,不用重启rsync服务;局部变量发生变化,需要重启rsync服务

注意:修改配置文件就重启↓

无论是全局变量发生变化,还是局部变量发生变化,都建议重启rsync服务使配置生效

5 守护进程的排除功能实践

5.1 排除的方式

a) --exclude=要配置的目录或文件名称

b) --exclude-from=要排除多个目录或文件汇总文件名称

c) 在配置文件中进行修改,指定要排除的信息

5.2 排除测试

第一个里程碑: 创建模拟测试环境
  1. [root@nfs01 data]# mkdir {a..d}
  2. [root@nfs01 data]# touch {a..d}/{1..3}.txt
  3. [root@nfs01 data]# tree.
  4. ├── a
  5. │   ├── 1.txt
  6. │   ├── 2.txt
  7. │   └── 3.txt
  8. ├── b
  9. │   ├── 1.txt
  10. │   ├── 2.txt
  11. │   └── 3.txt
  12. ├── c
  13. │   ├── 1.txt
  14. │   ├── 2.txt
  15. │   └── 3.txt
  16. └── d
  17.     ├── 1.txt
  18.     ├── 2.txt
  19.     └── 3.txt4 directories, 12 files
复制代码

第二个里程碑 利用 --exclude参数测试排除功能
  1. # 需求:不要a目录中3.txt 不要b、c目录
  2. [root@nfs01 data]# rsync -avz /data/ --exclude=a/3.txt --exclude=b --exclude=c rsync_backup@172.16.1.41::nfsdata
  3. sending incremental file list
  4. ./
  5. a/
  6. a/1.txt
  7. a/2.txt
  8. d/
  9. d/1.txt
  10. d/2.txt
  11. d/3.txt
  12. sent 300 bytes  received 114 bytes  828.00 bytes/sec
  13. total size is 0  speedup is 0.00
复制代码

精简方式排除
  1. [root@nfs01 data]# rsync -avz /data/ --exclude=a/3.txt --exclude={b,c}
  2. rsync_backup@172.16.1.41::nfsdata
  3. sending incremental file list
  4. ./
  5. a/
  6. a/1.txt
  7. a/2.txt
  8. d/
  9. d/1.txt
  10. d/2.txt
  11. d/3.txt
  12. sent 300 bytes  received 114 bytes  828.00 bytes/sec
  13. total size is 0  speedup is 0.00
复制代码

5.3 利用--exclude-from 方式进行排除

第一个里程碑: 创建模拟测试环境
  1. [root@nfs01 data]# mkdir {a..d}
  2. [root@nfs01 data]# touch {a..d}/{1..3}.txt
复制代码

第二个里程碑:利用--exlude-from参数,测试排除功能
  1. [root@nfs01 data]# vim /tmp/paichu.txt
  2. a/3.txt
  3. b
  4. c
复制代码

第三个里程碑:进行排除
  1. [root@nfs01 data]# rsync -avz /data/ --exclude-from=/tmp/paichu.txt
  2. rsync_backup@172.16.1.41::nfsdata
  3. sending incremental file list
  4. ./
  5. a/
  6. a/1.txt
  7. a/2.txt
  8. d/
  9. d/1.txt
  10. d/2.txt
  11. d/3.txt
  12. sent 300 bytes  received 114 bytes  828.00 bytes/sec
  13. total size is 0  speedup is 0.00
复制代码

说明:

01. 排除文件中,需要利用相对路径指定排除信息(不能利用绝对路径)

02. 相对路径指的是相对同步的目录信息而言,是对rsync -avz /data/ 后面的data目录进行相对

5.4 在配置文件中修改要排除的文件

第一个里程碑: 编写修改服务端配置文件
  1. vim /etc/rsyncd.conf
  2. [nfsdata]
  3. comment = "nfsdata dir by oldboy"
  4. path = /backup/nfsdata
  5. exclude=a/3.txt b c
复制代码

第二个里程碑:重启rsync服务
  1. killall rsync && sleep 1 && rsync --daemon
复制代码

第三里程碑: 进行测试
  1. [root@nfs01 data]# rsync -avz /data/  rsync_backup@172.16.1.41::nfsdata
  2. sending incremental file list
  3. ./
  4. a/
  5. a/1.txt
  6. a/2.txt
  7. skipping daemon-excluded file "a/3.txt"
  8. skipping daemon-excluded directory "b"
  9. *** Skipping any contents from this failed directory ***
  10. skipping daemon-excluded directory "c"
  11. *** Skipping any contents from this failed directory ***
  12. d/
  13. d/1.txt
  14. d/2.txt
  15. d/3.txt
  16. sent 407 bytes  received 116 bytes  1046.00 bytes/sec
  17. total size is 0  speedup is 0.00
  18. rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]
复制代码

6 守护进程来创建备份目录

通过客户端命令创建服务端备份目录中子目录

# 推送/etc/services文件到 服务器/backup/sda/目录
  1. [root@nfs01 ~]# rsync -avzP /etc/services rsync_backup@172.16.1.41::backup/dba/
  2. sending incremental file list
  3. created directory dba
  4. services
  5.       641020 100%   19.34MB/s    0:00:00 (xfer#1, to-check=0/1)
复制代码

# 推送/etc/services文件到 服务器/backup/sa/目录
  1. sent 127417 bytes  received 27 bytes  254888.00 bytes/sec
  2. total size is 641020  speedup is 5.03
  3. [root@nfs01 ~]# rsync -avzP /etc/services rsync_backup@172.16.1.41::backup/sa/
  4. sending incremental file list
  5. created directory sa
  6. services
  7.       641020 100%   19.34MB/s    0:00:00 (xfer#1, to-check=0/1)
复制代码

# 推送/etc/services文件到 服务器/backup/dev/目录
  1. sent 127417 bytes  received 27 bytes  254888.00 bytes/sec
  2. total size is 641020  speedup is 5.03
  3. [root@nfs01 ~]# rsync -avzP /etc/services rsync_backup@172.16.1.41::backup/dev/
  4. sending incremental file list
  5. created directory dev
  6. services
  7.       641020 100%   18.71MB/s    0:00:00 (xfer#1, to-check=0/1)
  8. sent 127417 bytes  received 27 bytes  254888.00 bytes/sec
  9. total size is 641020  speedup is 5.03
复制代码

检查结果:
  1. [root@backup backup]# tree.
  2. ├── dba
  3. │   └── services
  4. ├── dev
  5. │   └── services
  6. └── sa
  7.     └── services
复制代码

说明:

a 目标目录名称后要加上 "/", 表示创建目录,否则变为修改传输文件名称了

b 利用客户端创建服务备份子目录时,只能创建一级子目录。

7 守护进程的访问控制配置

第一个里程碑:在服务端配置文件,编写白名单策略或黑名单策略(只能取其一)
  1. vim /etc/rsyncd.conf
  2. hosts allow = 172.16.1.0/24
  3. #hosts deny = 0.0.0.0/32
复制代码

关于访问控制的说明:

01. 白名单和黑名单同时存在时,默认控制策略为不匹配的传输数据信息全部放行

02. 白名单单一存在时,默认控制策略为不匹配的传输数据信息全部禁止

03. 黑名单单一存在时,默认控制策略为不匹配的传输数据信息全部放行

全局变量修改控制策略信息,rsync服务必须重启

第二个里程碑:客户端进行测试
  1. [root@nfs01 backup]# rsync -avz /etc/services rsync_backup@10.0.0.41::data
  2. @ERROR: Unknown module 'data'
  3. rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]--------------------------------------------------------------------------------
  4. [root@nfs01 backup]# rsync -avz /etc/services sync_backup@172.16.1.41::data   
  5. sending incremental file list
  6. sent 29 bytes  received 8 bytes  74.00 bytes/sec
  7. total size is 641020  speedup is 17324.86
复制代码

8 守护进程无差异同步配置

8.1 什么是无差异:

推模式:我有什么,你就有什么;我没有,你也不能有

拉模式:你有什么,我就有什么;你没有,我也不能有

总结:服务端客户端数据完全一致(一模一样)

8.2 实现无差异同步方法

第一个里程碑: 创建实验环境
  1. [root@nfs01 ~]# ll /data/
  2. total 16
  3. drwxr-xr-x 2 root root 4096 Oct 12 10:29 a
  4. drwxr-xr-x 2 root root 4096 Oct 12 10:40 b
  5. drwxr-xr-x 2 root root 4096 Oct 12 10:29 c
  6. drwxr-xr-x 2 root root 4096 Oct 12 10:29 d
复制代码

第二个里程:进行第一次数据同步
  1. [root@nfs01 ~]# rsync -avz --delete  /data/ rsync_backup@172.16.1.41::backup/
  2. sending incremental file list
  3. ./
  4. a/
  5. a/1.txt
  6. a/2.txt
  7. a/3.txt
  8. b/
  9. b/1.txt
  10. b/2.txt
  11. b/3.txt
  12. c/
  13. c/1.txt
  14. c/2.txt
  15. c/3.txt
  16. d/
  17. d/1.txt
  18. d/2.txt
  19. d/3.txt
  20. sent 669 bytes  received 255 bytes  1848.00 bytes/sec
  21. total size is 0  speedup is 0.00
复制代码

第三个里程:删除指定目录,并添加指定文件,测试无差异功能
  1. # 删除客户端中的 a/ 目录,再进行无差异传输
  2. [root@nfs01 data]# rm a/ -rf
  3. [root@nfs01 data]# rsync -avz --delete  /data/ rsync_backup@172.16.1.41::backup/
  4. sending incremental file list
  5. ./
  6. deleting a/3.txt
  7. deleting a/2.txt
  8. deleting a/1.txt
  9. deleting a/
  10. sent 181 bytes  received 14 bytes  390.00 bytes/sec
  11. total size is 0  speedup is 0.00
复制代码

8.3 【注意】无差异同步方法的应用

01. 实现储存数据与备份数据完全一致(慎用)
  1. rsync -avz --delete  /data/ rsync_backup@172.16.1.41::backup /
复制代码

02. 快速删除大文件数据

1. mkdir /null --创建出一个空目录。

2. rsync -avz --delete /null/ /bigdata/

# 删除效率高于 rm -rf /bigdata

9 守护进程的列表功能配置

第一个里程碑: 在服务端配置文件中开启list列表功能
  1. [root@backup ~]# vim /etc/rsyncd.conf
  2. list = true
复制代码

第二个里程碑:重启rsync服务
  1. [root@backup ~]# killall rsync && sleep 1 && rsync --daemon
复制代码

第三个里程碑: 客户端查看服务端模块信息
  1. [root@nfs01 data]# rsync rsync_backup@172.16.1.41::
  2. backup         "backup dir by oldboy"
  3. nfsdata        "nfsdata dir by oldboy"
  4. nfsbackup      "nfsbackup dir by oldboy"
复制代码

说明:

为了提升备份服务器安全性,建议关闭list列表功能

四、常见问题
  1. [root@nfs01 tmp]# rsync -avz /etc/hosts  rsync_backup@172.16.1.41::backup
  2. Password:
  3. sending incremental file list
  4. hosts
  5. rsync: mkstemp ".hosts.U5OCyR" (in backup) failed: Permission denied (13)
  6. sent 200 bytes  received 27 bytes  13.76 bytes/sec
  7. total size is 371  speedup is 1.63
  8. rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]
复制代码

说明:备份目录权限设置不正确

解决办法:

将服务端的备份存放目录(path值),属主和属组修改为rsync。
  1. [root@backup ~]# chown -R rsync.rsync /backup/
复制代码

本文内容来自 老男孩Linux云计算运维优秀学员课后笔记整理
回复

使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Powered by Discuz! X3.2  © 2001-2013 Comsenz Inc.