rsync+inotify实现全网自动化数据备份-技术流ken
rsync简介
“rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步”
rsync的功能和特点
1. 可以实现服务器各种资源的备份(可以夸文件系统)
2. linux-rsync,windows-cwrsync
3. 可以做全量备份,也可以做增量备份
4. 在做备份的时候,可以排除一些特定的文件不做备份
5. 可以结合ssh实现加密传输
6. rsync支持工作在后台的模式(守护进程模式)
7. rsync可以结合inotify/sersync实现自动实时备份
8. rsync在传输文件的过程中可做限速
rsync的工作模式
1. 命令行模式(shell模式)
类似于cp、dd命令,实现备份文件的复制(备份)
2. 远程模式(远程shell模式)
利用ssh实现数据的远程传输,类似于 scp
3. 列表模式
类似于执行ls命令,仅仅用于列出文件内容列表(不是做复制操作)
4. 后台模式(守护进程模式)
rsync是工作在后台的
rsync实现自动备份
rsync实时自动备份
结合inotify/sersync
inotify/sersync:监控文件和目录中的文件是否发生更改(找出新文件)
rsync:将找出的文件备份过去
rsync的用法
1.本地使用(cp)
2.远程使用(scp)
3.守护进程(socket)
rsync选项详解
选项
-p:保持文件的权限属性不变
-v:显示执行过程信息
-r:目录做递归
-a:归档(包含r)
-z:压缩
-l:仅仅传输软链接自身
-L:传输软连接所指向的原始文件
-b:在备份文件的时候,如果备份文件已经存在,会将目标位置下旧的文件重命名,然后生成新的备份
--suffix=xxx 指定旧备份文件的后缀名
--backup-dir=xxxx 指定将旧备份文件移动到哪个位置下
-e:结合ssh实现加密传输
-e "ssh -p 22"
组合:-avz
rsync配置文件参数详解
模块:其实就是一个目录,这个模块用于保存客户端所传递过来的文件
参数:
pid file:指定rsync的pid文件的保存位置
uid:指定运行rsync进程的用户id
gid:指定运行rsync进程的用户组id
port:指定rsync所监听的端口(默认端口873)
path:指定模块所对应的目录的位置
use chroot:指定将用户锁定在家目录中
max connections:最大连接数(指定最多同时有多少个客户端在传输文件)
log file:指定日志文件的位置
log format:指定日志格式
lock file:指定rsync进程的锁文件的位置
read only:指定模块是否为只读状态
write only:指定模块是否为只写状态
list:指定用用户是否可以查看模块所对应的路径下的文件列表
exclude:指定排除不做传输的文件
exclude from:通过读取一个文件,来获取不对哪些文件做传输
auth users:指定用于连接这个模块所要使用的匿名用户名
secrets file:指定保存虚拟用户和密码文件
hosts allow:指定可以做文件传输的主机
hosts deny:黑名单
timeout:指定客户端的超时时间
inotify简介
inotify:查找发送了改变的文件或者新文件,可以持续检测一个目录中的文件是否发生更改。
软件inotify-tools有两个组件
inotifywait:检测一个目录下的文件所发生事件
inotifywatch:统计所触发的事件的次数
inotifywait的选项
-r:递归目录
-q:仅仅打印监控的事件信息
-m:一直处于监控状态[组合使用-mqr]
--excludei:排除文件或目录(不区分大小写)
--exclude:排除文件或目录(区分大小写)
--format:指定输出格式
%w:显示触发监控的事件的所在路径.[%w%f组合使用就能得到文件名]
%f:显示触发监控的事件的文件名
%e:显示所触发的事件
%T:显示事件的触发时间
--timefmat:指定输出的时间的格式
-e:指定要监控的事件
inotify监控的事件
access file or directory contents were read
modify file or directory contents were written
attrib file or directory attributes changed
close_write file or directory closed, after being opened in writeable mode
close_nowrite file or directory closed, after being opened in read-only mode
close file or directory closed, regardless of read/write mode
open file or directory opened
moved_to file or directory moved to watched directory
moved_from file or directory moved from watched directory
move file or directory moved to or from watched directory
create file or directory created within watched directory
delete file or directory deleted within watched directory
delete_self file or directory was deleted
unmount file system containing file or directory unmounted
rsync+inotify全网自动化备份实战案例
1.环境准备
centos7.5
rsync服务端IP:172.20.10.7/28
inotify服务端IP:172.20.10.8/28
2.关闭安全服务
[root@ken ~]# systemctl stop firewalld
[root@ken ~]# setenforce
[root@ken ~]# iptables -F
3. 配置rsync服务端
创建共享目录
[root@ken ~]# mkdir /ken
创建用于运行rsync进程的用户
[root@ken ~]# useradd -r -s /sbin/nologin -u kenken
修改属主和数组
[root@ken ~]# chown -R kenken.kenken /ken
查看rsync的文件,/etc/rsyncd.conf,此文件默认不存在,需要自己手工写。
[root@ken ~]# rpm -ql rsync
/etc/rsyncd.conf
/etc/sysconfig/rsyncd
/usr/bin/rsync
...
创建rsync配置文件
[root@ken ~]# vim /etc/rsyncd.conf
pid file=/var/lock/subsys/pidfile
lock file=/var/lock/subsys/rsync
log file=/var/log/rsync
uid=
gid=
timeout=
max connections=
[ken]
path=/ken
list=yes
use chroot=yes
read only=no
auth users=user1
secrets file=/etc/rsyncd.pwd
hosts allow=172.20.10.8/
创建虚拟用户文件
[root@ken ~]# echo "user1:123">>/etc/rsyncd.pwd
修改权限为600
[root@ken ~]# chmod /etc/rsyncd.pwd
启动rsync服务
[root@ken ~]# rsync --daemon
[root@ken ~]# ss -tnl | grep
LISTEN *: *:*
LISTEN ::: :::*
4.配置inotify服务端
下载inotify需要配置epel仓库,复制如下代码到你的yum配置文件里面即可
[ken]
name=ken
enabled=
gpgcheck=
baseurl=https://mirrors.aliyun.com/epel/7Server/x86_64/
下载inotify
[root@ken ~]# yum install rsync inotify-tools -y
创建需要备份数据的目录
[root@ken ~]# mkdir /kenken
创建一个保存rsync虚拟用户和密码的文件并更改权限为600
[root@ken ~]# echo "" >>/etc/rsync.pwd
[root@ken ~]# chmod /etc/rsync.pwd
创建自动化监控备份脚本
[root@ken ~]# vim authbak.sh
#!/bin/bash
prog="inotifywait"
events="create,delete,close_write"
opt="-mrq"
dir="/kenken"
remote_host="172.20.10.7"
anon_user="user1"
mod_name="ken"
pwd_file="/etc/rsync.pwd"
$prog $opt -e $events --format "%w%f" $dir | while read line
do
rsync -rz --delete $dir $anon_user@$remote_host::$mod_name --password-file=$pwd_file
done
客户端运行脚本
[root@ken ~]# nohup bash authbak.sh &
5.在客户端进行测试
客户端创建文件测试
[root@ken kenken]# touch {..}.txt
[root@ken kenken]# ls
.txt 1.txt .txt .txt .txt .txt .txt .txt .txt .txt
在rsync服务器端查看是否有相同文件
[root@ken ken]# ls
.txt .txt .txt .txt .txt .txt .txt .txt .txt .txt
测试成功!
客户端删除文件测试
[root@ken kenken]# rm -rf .txt .txt
[root@ken kenken]# ls
10.txt 2.txt 3.txt 5.txt 6.txt 7.txt 8.txt 9.txt
在rsync服务器端查看文件是否也已经被删除
[root@ken kenken]# ls
.txt .txt .txt .txt .txt .txt .txt .txt
测试成功!
至此我们已经可以实现全网自动化, 无差异化数据备份了。
rsync+inotify实现全网自动化数据备份-技术流ken的更多相关文章
- rsync+inotify实现全网自动化数据备份
第1章 环境配置 实例1-1 服务器及IP主机名规划 已知 4 台服务器主机名主机对应信息见下表: 服务器说明 外网 IP(NAT) 内网 IP(NAT) 主机名 web服务器 10.0.0.7/2 ...
- 网站集群架构(LVS负载均衡、Nginx代理缓存、Nginx动静分离、Rsync+Inotify全网备份、Zabbix自动注册全网监控)--技术流ken
前言 最近做了一个不大不小的项目,现就删繁就简单独拿出来web集群这一块写一篇博客.数据库集群请参考<MySQL集群架构篇:MHA+MySQL-PROXY+LVS实现MySQL集群架构高可用/高 ...
- Docker数据卷Volume实现文件共享、数据迁移备份(三)--技术流ken
前言 前面已经写了两篇关于docker的博文了,在工作中有关docker的基本操作已经基本讲解完了.相信现在大家已经能够熟练配置docker以及使用docker来创建镜像以及容器了.本篇博客将会讲解如 ...
- zabbix实现百台服务器的自动化监控--技术流ken
前言 最近有小伙伴通过Q联系到我说:公司现在有百多台服务器,想要部署zabbix进行监控,怎么实现自动化全网监控? 本篇博客将讲解一个我工作时做的一个实际项目,现在写出来供大家以后参考使用. 实现自动 ...
- Redis基础知识补充及持久化、备份介绍(二)--技术流ken
Redis知识补充 在上一篇博客<Redis基础认识及常用命令使用(一)--技术流ken>中已经介绍了redis的一些基础知识,以及常用命令的使用,本篇博客将补充一些基础知识以及redis ...
- 进阶!基于CentOS7系统使用cobbler实现单台服务器批量自动化安装不同版本系统(week3_day5_part2)-技术流ken
前言 在上一篇博文<cobbler批量安装系统使用详解-技术流ken>中已经详细讲解了cobbler的使用以及安装,本篇博文将会使用单台cobbler实现自动化批量安装不同版本的操作系统. ...
- cobbler单台服务器实现批量自动化安装不同版本系统-技术流ken
前言 在上一篇博文<cobbler批量安装系统使用详解-技术流ken>中已经详细讲解了cobbler的使用以及安装,本篇博文将会使用单台cobbler实现自动化批量安装不同版本的操作系统. ...
- 学会这个删库再也不用跑路了~ --技术流ken
前言 相信每一个学IT的人或多或少都听说过从删库到跑路这个梗~下图也是在各种交流群屡禁不止,新人听着也是瑟瑟发抖. 人们茶余饭后,街头巷角难免要问... 下面技术流ken就教给各位新手们一招删库再也不 ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(二)--技术流ken
项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)--技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个 ...
随机推荐
- azure cosmos db (mongo DB)
使用.net mongo的操作类操作azure(微软云)cosmosdb时,发现在做delete的操作的时候可以传一个文档对象,但是最后这个文档会解析成具体的sql语句,而当文档特别大时这样就出先了转 ...
- Jquery 在子页面上设置父页面元素的值
使用情景:因为我父页面上有用art.dialog,而子页面上有项目中的框架弹出方法跟art.dialog冲突,不能使用art.dialog自带的方法传值, 所以只好用一种简单粗暴的方法来设置. var ...
- 浅谈如何检查Linux中开放端口列表
给大家分享一篇关于如何检查Linux中的开放端口列表的详细介绍,首先如果你想检查远程Linux系统上的端口是否打开请点击链接浏览.如果你想检查多个远程Linux系统上的端口是否打开请点击链接浏览.如果 ...
- HTML标签的绝对路径和相对路径
我在javaweb中写json的Demo的时候遇到了这个问题,图片一一直取不出来,查了好久终于解决了,所以现在记录一下. 绝对路径: 其实很容易理解,如果你是一个普通的项目,那就是它在你电脑里真实存在 ...
- Hive数据倾斜解决方案
https://blog.csdn.net/yu0_zhang0/article/details/81776459 https://blog.csdn.net/lxpbs8851/article/de ...
- ssh 使用 sed 替换的时候,替换的字符串有单双引号的时候怎么用
线上有一个脚本需要 ssh 登录远程机,然后完成特定文件中的某个值,替换的字符中有单引号,所以需要特定的写法,才能成功 1).ssh 远程执行命令,替换字符串中有单引号( ' ) ssh zhuzi@ ...
- LeetCode刷题:第一题 两数之和
从今天开始刷LeetCode 第一题:两数之和 题目描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种 ...
- ARM指令学习
跳转指令 直接向程序计数器PC写入i跳转地址值,可以实现在4GB的地址空间中的任意跳转. ARM跳转指令可以完成向前或向后的32MB的地址空间的跳转. -B 跳转指令 -BL 带返回的跳转指令 -BL ...
- SQL Server 深入解析索引存储(堆)
标签:SQL SERVER/MSSQL SERVER/数据库/DBA/索引体系结构/堆 概述 本篇文章是关于堆的存储结构.堆是不含聚集索引的表(所以只有非聚集索引的表也是堆).堆的 sys.parti ...
- Jenkins的初级应用(2)-Invoke Phing targets
Invoke Phing targets这个插件主要是读取xml形式包括自动化测试打包部署的配置文件,然后根据流程走下来.用phing命令读取并执行xml配置文件,然后执行定义的步骤.比如check. ...