Rsync守护进程部署和实践

Rsync服务器为服务端,eth0:10.0.0.41,eth1:172.16.1.41
NFS服务器为客户端,eth0:10.0.0.31,eth1:172.16.1.31

(一)服务端部署流程

检查软件是否安装

[root@backup ~]# rpm -qa |grep rsync
rsync-3.0.6-12.el6.x86_64
# 如果没有安装 运行 yum install rsync -y

编写配置文件(系统默认没有该配置文件,需要自己创建)

[root@backup ~]# vim /etc/rsyncd.conf
#rsync_config
#created by maxu an 20191020
##rsyncd.conf   start##uid=rsync                           #指定rsync服务运行时候,向磁盘读取和写入的操作者
gid=rsync                           #指定rsync服务运行的时候,向磁盘进行读取和写入操作的操作者
use chroot=no                       #进行数据同步存储时,安全相关参数,默认内网进行数据同步,可以关闭
max connections=200                 #定义向备份服务器进行数据存储时的最大并发连接数
timeout=300                         #定义与备份服务器建立网络连接,在多长时间没有数据传输时,就释放连接
pid file=/var/run/rsyncd.pid        #服务程序运行时,会将进程的pid信息存储到一个指定pid文件中
lock file=/var/run/rsync.lock       #定义锁文件,主要配合max connections参数使用,当达到最大参数时,禁止访问
log file=/var/log/rsyncd.log        #定义服务的日志文件保存路径
ignore errors                       #在进行数据传输备份时候,忽略一些I/O产生的传输错误
read only=false                     #设置对备份目录具有读写权限,false即将只读模式关闭
list=false                          #确认是否可以将服务配置的模块信息在客户端展示出来
hosts allow=172.16.1.0/24           #设置备份目录允许进行网络数据备份的主机地址和网段信息,即设置白名单
hosts deny=0.0.0.0/32               #设置备份目录禁止进行网络数据备份的主机地址和网段信息,即设置黑名单
auth user=resync_backup             #指定访问备份数据目录的认证用户信息,为虚拟用户,不需要创建
secrets file=/etc/rsync.passwd      #设置访问备份数据目录进行认证用户的密码文件信息,文件有认证用户的密码信息
#模块信息
[backup]                            #指定备份目录的模块名称信息
comment="backup dir by oldboy"      #注释:对文件的说明
path=/backup                        #指定数据备份目录信息

创建备份目录管理用户

[root@backup ~]# useradd rsync -M -s /sbin/nologin

创建备份目录

[root@backup ~]# mkdir /backup                      # 创建备份目录
[root@backup ~]# chown -R rsync.rsync /backup/      # 目录所有者设置

创建认证文件

[root@backup ~]# echo 'rsync_backup:oldboy123' >>/etc/rsync.password #将认证用户的密码放入文件中
[root@backup ~]# chmod 600 /etc/rsync.password  #设置权限,避免所有人查看认证文件

启动rsync服务

[root@backup ~]# rsync --daemon
[root@backup ~]# ps -ef |grep rsync             #查看进程是否运行
root       1854      1  0 13:33 ?        00:00:00 rsync --daemon
root       1856   1225  0 13:33 pts/0    00:00:00 grep --color=auto rsync
[root@backup ~]# netstat -lntup |grep rsync     #查看端口信息(rsync默认端口873)
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      1854/rsync
tcp        0      0 :::873                      :::*                        LISTEN      1854/rsync

(二)客户端部署流程

确认客户端是否安装软件

[root@nfs01 ~]# rpm -qa |grep rsync
rsync-3.0.6-12.el6.x86_64
# 如果没有安装 运行 yum install rsync -y

创建认证密码文件

[root@nfs01 ~]# echo 'oldboy123' >>/etc/rsync.password  #密码与服务端一致
[root@nfs01 ~]# chmod 600 /etc/rsync.password           #密码文件权限设置

(三)进行数据备份测试

测试:将NFS服务器下的/etc目录及目录下所有文件备份到备份服务器下backup模块下

[root@nfs01 ~]# rsync -avz /etc rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
hostssent 185 bytes  received 27 bytes  424.00 bytes/sec
total size is 351  speedup is 1.66

在备份服务器中查看结果

[root@backup ~]# ll /backup/
total 4
drwxr-xr-x 78 rsync rsync 4096 Oct 23 13:51 etc

(四)rsync备份扩展功能实践

1.多模块功能实践

服务端修改配置文件,增加2个模块,backup01,backup02

[root@backup ~]# vim /etc/rsyncd.conf
...
[backup01]
comment="backup dir by oldboy"
path=/backup01
[backup02]
comment="backup dir by oldboy"
path=/backup02

创建模块的目录,然后变更目录管理者为rsync

[root@backup ~]# mkdir /backup01 /backup02
[root@backup ~]# chown -R rsync.rsync /backup01 /backup02

重启服务程序

[root@backup ~]# killall rsync
[root@backup ~]# rsync --daemon

测试:分别把NFS服务器上的/etc/hosts文件备份到备份服务器上的backup01、backup02模块下

[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup01 --password-file=/etc/rsync.password
sending incremental file list
hostssent 185 bytes  received 27 bytes  424.00 bytes/sec
total size is 351  speedup is 1.66
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup02 --password-file=/etc/rsync.password
sending incremental file list
hostssent 185 bytes  received 27 bytes  141.33 bytes/sec
total size is 351  speedup is 1.66

备份服务器上查看结果

[root@backup ~]# ll /backup01
total 4
-rw-r--r-- 1 rsync rsync 351 Oct 22 18:52 hosts
[root@backup ~]# ll /backup02
total 4
-rw-r--r-- 1 rsync rsync 351 Oct 22 18:52 hosts

2.排除不需要的数据

NFS服务器上创建环境

[root@nfs01 ~]# mkdir /test
[root@nfs01 ~]# touch /test/{a..d}.txt
[root@nfs01 ~]# ll /test/
total 0
-rw-r--r-- 1 root root 0 Oct 23 14:45 a.txt
-rw-r--r-- 1 root root 0 Oct 23 14:45 b.txt
-rw-r--r-- 1 root root 0 Oct 23 14:45 c.txt
-rw-r--r-- 1 root root 0 Oct 23 14:45 d.txt

要求:备份/test 目录下的a.txt和c.txt到备份服务器上的/backup下
方法1:通过–exclude排除不要的文件,使用与文件量少的时候

[root@nfs01 ~]# rsync -avx /test/ --exclude={b.txt,d.txt} rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
./
a.txt
c.txtsent 127 bytes  received 49 bytes  352.00 bytes/sec
total size is 0  speedup is 0.00

查看结果

[root@backup ~]# ll /backup
total 0
-rw-r--r-- 1 rsync rsync 0 Oct 23 14:45 a.txt
-rw-r--r-- 1 rsync rsync 0 Oct 23 14:45 c.txt

方法2:exclude-from=file来排除
首先创建一个文件,把需要排除的文件名写入这个文件中,注意该文件自身写入,否则同步时会把这个文件也同步过去;此方法,可以利用find或其他方法,把匹配到不需要的文件名全部输出到这个文件夹中,然后进行传输备份

[root@nfs01 ~]# vim /test/exclude.txt
b.txt
d.txt
exclude.txt

在NFS服务器执行操作

[root@nfs01 ~]# rsync -avz /test/ --exclude-from=/test/exclude.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
./
a.txt
c.txtsent 125 bytes  received 49 bytes  348.00 bytes/sec
total size is 0  speedup is 0.00

查看结果

[root@backup ~]# ll /backup
total 0
-rw-r--r-- 1 rsync rsync 0 Oct 23 14:45 a.txt
-rw-r--r-- 1 rsync rsync 0 Oct 23 14:45 c.txt

3.备份时创建目录

直接在模块后面接上需要创建的目录即可,目录后‘/’不能省略

[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup/sa/ --password-file=/etc/rsync.password
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup/dev/ --password-file=/etc/rsync.password
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup/dba/ --password-file=/etc/rsync.password

查看结果

[root@backup ~]# tree /backup
/backup
├── dba
│   └── hosts
├── dev
│   └── hosts
└── sa└── hosts3 directories, 3 files

4.守护进程的访问控制配置(黑白名单)

首先在默认情况下,内网和外网的IP都是可以进行备份传输

[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup01 --password-file=/etc/rsync.password
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@10.0.0.41::backup02 --password-file=/etc/rsync.password

查看结果

[root@backup ~]# ll /backup01 /backup02
/backup01:
total 4
-rw-r--r-- 1 rsync rsync 351 Oct 22 18:52 hosts/backup02:
total 4
-rw-r--r-- 1 rsync rsync 351 Oct 22 18:52 hosts

1).只有白名单,白名单网段或主机信息允许,其余阻止。

修改配置文件,只允许内网IP进行备份

[root@backup ~]# vim /etc/rsyncd.conf
...
hosts allow=172.16.1.0/24
#hosts deny=0.0.0.0/32
...#保存后重启服务
[root@backup ~]# killall rsync
[root@backup ~]# rsync --daemon

再次备份传输数据,10.0.0.1这个ip已经无法传输备份数据了

[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup01 --password-file=/etc/rsync.password
sending incremental file list
hostssent 185 bytes  received 27 bytes  424.00 bytes/sec
total size is 351  speedup is 1.66
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@10.0.0.41::backup02 --password-file=/etc/rsync.password
@ERROR: Unknown module 'backup02'
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

2).只有黑名单,黑名单网段或主机信息阻止,其他允许。

修改配置文件,禁止10.0.0.0/24网段访问

[root@backup ~]# vim /etc/rsyncd.conf
...
#hosts allow=172.16.1.0/24
#hosts deny=0.0.0.0/32
hosts deny=10.0.0.0/24
...#保存后重启服务
[root@backup ~]# killall rsync
[root@backup ~]# rsync --daemon

再次传输备份数据,10.0.0.41无法进行数据传输备份

[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup01 --password-file=/etc/rsync.password
sending incremental file list
hostssent 185 bytes  received 27 bytes  424.00 bytes/sec
total size is 351  speedup is 1.66
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@10.0.0.41::backup02 --password-file=/etc/rsync.password
@ERROR: Unknown module 'backup02'
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]

3).有白名单,也有黑名单的,白名单网段或主机信息允许,黑名单网段或主机信息阻止,其余允许,建议只选择前两种方式配置。

修改配置文件

[root@backup ~]# vim /etc/rsyncd.conf
...
hosts allow=10.0.0.0/24
hosts deny=172.16.1.0/24
...#保存后重启服务
[root@backup ~]# killall rsync
[root@backup ~]# rsync --daemon

再次传输数据备份,可以看到黑名单的IP不能传输备份,白名单的可以传输备份

[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup01 --password-file=/etc/rsync.password
@ERROR: Unknown module 'backup01'
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@10.0.0.41::backup02 --password-file=/etc/rsync.password
sending incremental file list
hostssent 185 bytes  received 27 bytes  424.00 bytes/sec
total size is 351  speedup is 1.66

还有一种特殊情况:某个IP被同时写进黑名单和白名单,此时白名单优先于白名单,建议不要使用此配置方法


5.守护进程无差异同步配置

无差异同步就是,我有的数据你必须有,而且我没有的数据你也不能有
查看备份服务器的/backup目录和NFS服务器的/test目录,如果自己创建文件或目录,记得把/backup目录和目录下文件的所有者替换为rsync,否则后面会出错

#备份服务器
[root@backup ~]# tree /backup
/backup
├── a.txt
├── c.txt
├── hosts
├── oldboy
│   ├── ad.txt
│   └── test.txt
└── test└── a.txt
2 directories, 6 files#NFS服务器
[root@nfs01 ~]# tree /test/
/test/
├── a.txt
├── b.txt
├── c.txt
├── d.txt
└── exclude.txt

把NFS服务器/test目录下的数据通过无差异备份到backup模块下

[root@nfs01 ~]# rsync -avz /test/ --delete rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
./
deleting test/a.txt
deleting test/
deleting oldboy/test.txt
deleting oldboy/ad.txt
deleting oldboy/
deleting hosts
b.txt
d.txt
exclude.txtsent 226 bytes  received 68 bytes  588.00 bytes/sec
total size is 24  speedup is 0.08

查看两边目录一致性,结果备份服务器下的多余文件被删除,剩余文件数据与/test下一致,这就是无差异备份,使用该方法时一定注意文件是否可以删除,此方法可以利用空目录无差异备份到一个需要删除的大目录下,这样可以快速清空一个目录

#备份服务器下的/backup目录
[root@backup ~]# tree /backup
/backup
├── a.txt
├── b.txt
├── c.txt
├── d.txt
└── exclude.txt0 directories, 5 files
#NFS服务器下/test目录
[root@nfs01 ~]# tree /test/
/test/
├── a.txt
├── b.txt
├── c.txt
├── d.txt
└── exclude.txt0 directories, 5 files

6.守护进程的列别功能配置(显示模块)

列别功能就是显示出配置文件中模块
修改配置文件

[root@backup ~]# vim /etc/rsyncd.conf
...
#list=false
list=ture
...
#保存重启服务
[root@backup ~]# killall rsync
[root@backup ~]# rsync --daemon

查看模块

[root@nfs01 ~]# rsync rsync_backup@172.16.1.41::
backup          "backup dir by oldboy"
backup01        "backup dir by oldboy"
backup02        "backup dir by oldboy"

list=ture是一个不安全的操作,容易被攻击者清空模块下的备份文件,所以一般不会开启

Rsync守护进程部署和实践相关推荐

  1. rsync守护进程部署

    实验环境:centos7.6,2G内存,50G硬盘大小,虚拟机服务端ip:172.16.1.41 客户端ip:172.16.1.31 服务端部署流程 第一步:安装软件 rpm -qa|grep rsy ...

  2. ​rsync守护进程模式实践排错08

    rsync守护进程模式实践排错08说明:本文来自来自北京老男孩linux运维实战培训中心-运维就业课程免费视频内容,本文内容为系列内容,更多分享信息见:http://oldboy.blog.51cto ...

  3. .NET跨平台实践:.NetCore、.Net5/6 Linux守护进程设计

    几年前,我写过两篇关于用C#开发Linux守护进程的技术文章,分别是<.NET跨平台实践:用C#开发Linux守护进程.NET跨平台实践:再谈用C#开发Linux守护进程 - 完整篇 这就是本文 ...

  4. sersync+rsync原理及部署

    转载于http://blog.51cto.com/liubao0312/1677586 一.为什么要用rsync+sersync架构? 1.sersync是基于inotify开发的,类似于inotif ...

  5. .NET跨平台实践:再谈用C#开发Linux守护进程 — 完整篇

    Linux守护进程是Linux的后台服务进程,相当于Windows服务,对于为Linux开发服务程序的朋友来说,Linux守护进程相关技术是必不可少的,因为这个技术不仅仅是为了开发守护进程,还可以拓展 ...

  6. .NET跨平台实践:用C#开发Linux守护进程

    Linux守护进程(Daemon)是Linux的后台服务进程,它脱离了与控制终端的关联,直接由Linux init进程管理其生命周期,即使你关闭了控制台,daemon也能在后台正常工作. 一句话,为L ...

  7. 搭建Jenkins+Github的自动部署环境并使用守护进程(Supervisor)部署Golang(gin)项目

    零.前言 Jenkins是一个自动部署的平台,可以极大的帮助我们自动部署项目,把注意力放在书写代码上. 教程环境说明: 系统:ubuntu20 配置:2核4G 软件:JAVA11 安装方式:APT(不 ...

  8. Linux进程实践(5) --守护进程

    概述 守护进程是在需要在后台长期运行不受终端控制的进程,通常情况下守护进程在系统启动时自动运行,在服务器关闭的时候自动关闭:守护进程的名称通常以d结尾,比如sshd.xinetd.crond.atd等 ...

  9. k8s核心技术-Controller(DaemonSet)_部署守护进程---K8S_Google工作笔记0034

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 这个守护进程是什么意思,其实就是说,我们要保证,每个node上都要运行在同一个pod中, 也就是说 ...

最新文章

  1. 字符串-最后一个单词的长度(双指针)
  2. unet 层_【paper阅读笔记】UNet
  3. 小心陷入MySQL索引的坑
  4. linux 减小根分区大小_减小linux下根分区
  5. Java基础学习总结(182)——Java 日志记录实践总结
  6. 人脸识别源码运行指南
  7. matlab 正版下载,matlab软件正版
  8. Java - 类与对象
  9. excel出入库采购库存管理系统
  10. java代码对图片缩放
  11. oracle百度坐标系火星转换,标准坐标系与火星坐标系(高德)百度坐标系之间互转...
  12. 元宇宙营销新时代| 元宇宙数字营销峰会于7月29日在上海淳大万丽酒店盛大开幕!
  13. 博士申请 | 美国达特茅斯学院杨耀青老师招收深度学习方向全奖博士生
  14. 纯css饼图,使用css3画饼图
  15. java的paypal支付demo_paypal支付demo
  16. 怎么修改背景图片大小的HTML代码,css如何改变背景图片大小?
  17. 派克比例方向控制阀放大器
  18. 新一代人工智能产业八大主要应用场景研判
  19. 55.【Java 线程】
  20. 云服务器还是服务器托管,中小企业应如何选择?

热门文章

  1. QML:ListView按下选中当前项和高亮的一例
  2. openCV+python实现倾斜校正
  3. 微信小程序Demo组件大全(对话框、指示器、五星评分,画廊,影院座位……
  4. 什么是Redis?为什么要用Redis?
  5. Verilog HDL基础知识
  6. 非独立同分布数据孤岛的联邦学习:一项实验研究
  7. 大话Verilog——Verilog入门(一)
  8. java把字符转成浮点_java 字符型转换成浮点型
  9. C++如何运用play sound函数,给你的程序加点音乐
  10. 上海电机学院计算机科学与技术专业怎么样,上海电机学院计算机科学与技术专业2016年在上海理科高考录取最低分数线...