Rsync守护进程部署和实践
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守护进程部署和实践相关推荐
- rsync守护进程部署
实验环境:centos7.6,2G内存,50G硬盘大小,虚拟机服务端ip:172.16.1.41 客户端ip:172.16.1.31 服务端部署流程 第一步:安装软件 rpm -qa|grep rsy ...
- rsync守护进程模式实践排错08
rsync守护进程模式实践排错08说明:本文来自来自北京老男孩linux运维实战培训中心-运维就业课程免费视频内容,本文内容为系列内容,更多分享信息见:http://oldboy.blog.51cto ...
- .NET跨平台实践:.NetCore、.Net5/6 Linux守护进程设计
几年前,我写过两篇关于用C#开发Linux守护进程的技术文章,分别是<.NET跨平台实践:用C#开发Linux守护进程.NET跨平台实践:再谈用C#开发Linux守护进程 - 完整篇 这就是本文 ...
- sersync+rsync原理及部署
转载于http://blog.51cto.com/liubao0312/1677586 一.为什么要用rsync+sersync架构? 1.sersync是基于inotify开发的,类似于inotif ...
- .NET跨平台实践:再谈用C#开发Linux守护进程 — 完整篇
Linux守护进程是Linux的后台服务进程,相当于Windows服务,对于为Linux开发服务程序的朋友来说,Linux守护进程相关技术是必不可少的,因为这个技术不仅仅是为了开发守护进程,还可以拓展 ...
- .NET跨平台实践:用C#开发Linux守护进程
Linux守护进程(Daemon)是Linux的后台服务进程,它脱离了与控制终端的关联,直接由Linux init进程管理其生命周期,即使你关闭了控制台,daemon也能在后台正常工作. 一句话,为L ...
- 搭建Jenkins+Github的自动部署环境并使用守护进程(Supervisor)部署Golang(gin)项目
零.前言 Jenkins是一个自动部署的平台,可以极大的帮助我们自动部署项目,把注意力放在书写代码上. 教程环境说明: 系统:ubuntu20 配置:2核4G 软件:JAVA11 安装方式:APT(不 ...
- Linux进程实践(5) --守护进程
概述 守护进程是在需要在后台长期运行不受终端控制的进程,通常情况下守护进程在系统启动时自动运行,在服务器关闭的时候自动关闭:守护进程的名称通常以d结尾,比如sshd.xinetd.crond.atd等 ...
- k8s核心技术-Controller(DaemonSet)_部署守护进程---K8S_Google工作笔记0034
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 这个守护进程是什么意思,其实就是说,我们要保证,每个node上都要运行在同一个pod中, 也就是说 ...
最新文章
- 字符串-最后一个单词的长度(双指针)
- unet 层_【paper阅读笔记】UNet
- 小心陷入MySQL索引的坑
- linux 减小根分区大小_减小linux下根分区
- Java基础学习总结(182)——Java 日志记录实践总结
- 人脸识别源码运行指南
- matlab 正版下载,matlab软件正版
- Java - 类与对象
- excel出入库采购库存管理系统
- java代码对图片缩放
- oracle百度坐标系火星转换,标准坐标系与火星坐标系(高德)百度坐标系之间互转...
- 元宇宙营销新时代| 元宇宙数字营销峰会于7月29日在上海淳大万丽酒店盛大开幕!
- 博士申请 | 美国达特茅斯学院杨耀青老师招收深度学习方向全奖博士生
- 纯css饼图,使用css3画饼图
- java的paypal支付demo_paypal支付demo
- 怎么修改背景图片大小的HTML代码,css如何改变背景图片大小?
- 派克比例方向控制阀放大器
- 新一代人工智能产业八大主要应用场景研判
- 55.【Java 线程】
- 云服务器还是服务器托管,中小企业应如何选择?
热门文章
- QML:ListView按下选中当前项和高亮的一例
- openCV+python实现倾斜校正
- 微信小程序Demo组件大全(对话框、指示器、五星评分,画廊,影院座位……
- 什么是Redis?为什么要用Redis?
- Verilog HDL基础知识
- 非独立同分布数据孤岛的联邦学习:一项实验研究
- 大话Verilog——Verilog入门(一)
- java把字符转成浮点_java 字符型转换成浮点型
- C++如何运用play sound函数,给你的程序加点音乐
- 上海电机学院计算机科学与技术专业怎么样,上海电机学院计算机科学与技术专业2016年在上海理科高考录取最低分数线...