Linux运维-Rsync+Inotify
Rsync+Inotify
Rsync:linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
特性:
可以镜像保存整个目录树和文件系统。
可以很容易做到保持原来文件的权限、时间、软硬链接等等。
无须特殊权限即可安装。
快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
支持匿名传输,以方便进行网站镜象。
【Rsync服务端】
1、 查看rsync安装包。
rpm -qa rsync
安装软件包:yum install -y rsync
2、 添加rsync服务的用户,管理本地目录用的。
useradd -s /sbin/nologin -M rsync
id rsync
3、 生成rsyncd.conf配置文件。
vi /etc/rsyncd.conf放入事先准备的配置。
[配置文件/etc/rsync.conf]
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[backup]
path = /backup
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
man rsyncd.conf去查www.samba.org/ftp/rsync/rsyncd.conf.html
4、 根据rsyncd.conf的auth users配置账号,远程连接用的。并根据secrets file参数生成密码文件。
echo “rsync_backup:oldboy” >/etc/rsync.password
cat /etc/rsync.password
5、 为密码文件配置权限。
chmod 600 /etc/rsync.password
ls -l /etc/rsync.password
6、 创建共享的目录并授权rsync服务管理
mkdir /backup -p
chow -R rsync.rsync /backup
如果没有/backup目录,就会chdir fialed。
7、 启动rsync服务并检查
rsync –daemon
ps aux|grep rsync|grep -v grep
lsof -I :873
8、 加入开机自启动
echo “/usr/bin/rsync --daemon” >>/etc/rc.local
tail -l /etc/rc.local
【Rsync客户端】
1、 生成连接服务器需要的密码文件。
echo “oldboy” >/etc/rsync.password
cat /etc/rsync.password
2、 为密码文件配置权限
chmod 600 /etc/rsync.password
ls -l /etc/rsync.password
3、 同步文件
推送:
rsync -avz /tmp/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
rsync -avz /tmp/ rsync://rsync_backup@172.16.1.41/backup/ --password-file=/etc/rsync.password
拉取:
rsync -avz rsync_backup@172.16.1.41::backup /tmp/ --password-file=/etc/rsync.password
rsync -avz rsync://rsync_backup@172.16.1.41/backup/ /tmp/ --password-file=/etc/rsync.password
Note:上述的backup为模块名,不是路径。
【语法】
rsyn [参数] 源 虚拟用户@IP::模块 --password-file=/etc/rsync.password
rsyn [参数] 虚拟用户@IP::模块 目的 --password-file=/etc/rsync.password
【参数】
-v,--verbose详细模式输出,传输时的进度等信息。
-z,--compress传输时进行压缩以提高传输效率,--compress-level=NUM可按级别压缩。
-a,--archive归档模式,表示以递归方式传输文件,并保持所有文件属性。等于-rtopgDl。
-r,--recursive对子目录以递归模式,即目录下的所有目录都同样传输,注意时小写r。
-t,--times保持文件时间信息。
-o,--owner保持文件属主信息。
-p,--perms保持文件权限。
-g,--group保持文件属组信息。
-P,--progress显示同步的过程及传输时的进度等信息。
-D,--devices保持设备文件信息。
-l,links保持软链接。
-e,--rsh=COMMAND使用的信道协议,指定替代rsh的shell程序。例如:ssh
--exclude=PATHTERN指定排除不需要传输的文件模式(和tar参数一样)
--exclude-from=file(文件名所在的目录文件)(和tar参数一样)
--bwlimit=RATE limit socket I/O bandwidth
--delete 让目录目录SRC和源目录数据DST一致。
优点:
- 增量备份,支持socket(daemon),集中备份(支持推拉,都是以客户端为参照物)。
- 远程SHELL通道模式还可以加密(SSH)传输,socket(daemon)需要加密传输,需配合vpn服务。
缺点:
- 大量小文件时候同步的时候,比对时间较长,有的时候,rsync进程可能会停止。
- 同步大文件,10G这样的大文件有时也会有问题,如中断。未完整同步前,是隐藏文件,可以通过续传等参数实现传输。
note:一次性远程拷贝可以用scp。
SYNOPSIS
Local: rsync [OPTION...] SRC... [DEST]
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
inotify-tools
异步文件系统事件监测机制。
inotify-tools提供两种工具,一是 inotifywait,它是用来监控文件或目录的变化,二是inotifywatch,它是用来统计文件系统访问的次数。
安装:
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum install -y inotify-tools
inotifywait语法:inotifywait [参数] [要监测的文件]
inotifywait [-hcmrq] [-e ] [-t ] [--format ] [--timefmt ] [ ... ]
示例:inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e creat,delete /backup
常用参数:
--timefmt 时间格式
%y年 %m月 %d日 %H小时 %M分钟
--format 输出格式
%T时间 %w路径 %f文件名 %e状态
-m 始终保持监听状态,默认触发事件即退出。
-r 递归查询目录
-q 打印出监控事件
-e 定义监控的事件,可用参数:
open 打开文件
access 访问文件
modify 修改文件
delete 删除文件
create 新建文件
attrb 属性变更
note:脚本编写时可以在命令结尾加&表示后台运行
事件相关参数默认大小:
[root@m01 ~]# cd /proc/sys/fs/inotify/
[root@m01 inotify]# cat max_user_watches
8192 #设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)
[root@m01 inotify]# cat max_user_instances
128 #设置每个用户可以运行的inotifywait或inotifywatch命令的进程数
[root@m01 inotify]# cat max_queued_events
16384 #设置inotify实例事件队列可容纳的事件数量
inotifywatch语法:inotifywatch [-hvzrqf] [-e ] [-t ] [-a ] [-d ] [ ... ]
参数:
-h, –help输出帮助信息
-v, –verbose输出详细信息
@排除不需要监视的文件,可以是相对路径,也可以是绝对路径。
–fromfile 从文件读取需要监视的文件或排除的文件,一个文件一行,排除的文件以@开头。
-z, –zero输出表格的行和列,即使元素为空
–exclude 正则匹配需要排除的文件,大小写敏感。
–excludei 正则匹配需要排除的文件,忽略大小写。
-r, –recursive监视一个目录下的所有子目录。
-t , –timeout 设置超时时间
-e , –event 只监听指定的事件。
-a , –ascending 以指定事件升序排列。
-d , –descending 以指定事件降序排列
脚本:实现实时同步/data到nfs服务器上
vim
/server/scripts/read_time_sync.sh
#!/bin/sh
Path=/data
Ip=172.16.1.41
/usr/bin/inotifywait
-mrq --format '%w%f' -e close-write,delete $Path \
while read file
do
cd $Path
[ -f $file ] &&\
rsync -az ./$file --delete
rsync_backup@$Ip::nfsbackup --password-file=/etc/rsync.password
done
Linux运维-Rsync+Inotify的更多相关文章
- Linux运维: Rsync同步数据(ubuntu16.04+windows10)
rsync同步数据 -环境:Linux (ubuntu16.04) + windows10 Linux: 安装 sudo apt-get install rsync rsync --version 查 ...
- Linux运维入门到高级全套常用要点
Linux运维入门到高级全套常用要点 目 录 1. Linux 入门篇................................................................. ...
- Linux运维之道(大量经典案例、问题分析,运维案头书,红帽推荐)
Linux运维之道(大量经典案例.问题分析,运维案头书,红帽推荐) 丁明一 编 ISBN 978-7-121-21877-4 2014年1月出版 定价:69.00元 448页 16开 编辑推荐 1 ...
- 详解linux运维工程师入门级必备技能
详解linux运维工程师入门级必备技能 | 浏览:659 | 更新:2013-12-24 23:23 | 标签:linux it自动化运维就是要很方便的运用各种工具进行管理维护,有效的实施服务器保护 ...
- linux 运维知识体系
这里将会介绍一下,LINUX运维工程师的知识体系. 只能说是个人理解吧.并不是必要或者充分的,仅供网友参考. 大部分本博客都有涉及,并不完整. 1.LINUX运维基础 1.1.LINUX系统的简介,分 ...
- linux运维基础__争取十月前研究的差不多
转来的一编,考虑在十月前研究的差不多 linux运维人员基础 1.很多地方经常会用到的rsync工具 实施几台服务器的同步效果 我们公司就是使用这个工具完成服务器的游戏的服务端和客户端同步,有几个文章 ...
- linux运维工作内容及岗位要求
什么是Linux?大家日常使用电脑听歌.打游戏娱乐或处理日常工作时,接触到最多的就是Windows操作系统,电脑如果不安装Windows系统是无法进行娱乐和工作的,所有的软件程序都必须运行在操作系统之 ...
- linux运维工程师面试题收集
面试必考 mysql5和mysql6 有什么区别 mysql-server-5.5:默认引擎改为Innodb,提高了性能和扩展性,提高实用性(中继日志自动恢复) mysql-server-5.6:In ...
- 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路
做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...
随机推荐
- 单调队列:temperature
题目大意:某国进行了连续n天的温度测量,测量存在误差,测量结果是第i天温度在[l_i,r_i]范围内. 求最长的连续的一段,满足该段内可能温度不降. 第一行n下面n行,每行l_i,r_i 1<= ...
- ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network SOC
最近ISSCC2017大会刚刚举行,看了关于Deep Learning处理器的Session 14,有一些不错的东西,在这里记录一下. A 2.9TOPS/W Deep Convolutional N ...
- jsp判断以某个字母开头
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ tag ...
- C# ContentType: "application/json" 请求方式传json参数问题
处理Http请求时遇到的ContentType为application/json方式,记录下这种Post请求方式下如何传json参数: var request = (HttpWebRequest)We ...
- 【Python】常用排序算法的python实现和性能分析
作者:waterxi 原文链接 背景 一年一度的换工作高峰又到了,HR大概每天都塞几份简历过来,基本上一天安排两个面试的话,当天就只能加班干活了.趁着面试别人的机会,自己也把一些基础算法和一些面试题整 ...
- Linux CentOS 7 安装字体库 & 中文字体
前言 报表中发现有中文乱码和中文字体不整齐(重叠)的情况,首先考虑的就是操作系统是否有中文字体,在CentOS 7中发现输入命令查看字体列表是提示命令无效: 如上图可以看出,不仅没有中文字体,连字体库 ...
- CentOS查看CPU、内存、版本等系统信息
CentOS查看系统信息 一:查看CPU more /proc/cpuinfo | grep "model name" grep "model name" /p ...
- Intellij IDEA的一些操作小技巧
1.Presentation Mode 我们可以使用 Presentation Mode,将IDEA弄到最大,可以让你只关注一个类里面的代码,进行毫无干扰的 coding.可以使用Alt+v快捷键,弹 ...
- EBS Certifications
Last Updated: September 29, 2017. This summary cross-references published blog articles and the off ...
- laravel中新建文件并保存数据到文件中
//base_path()获取当前的绝对路径 $path=base_path().'\config\web.php'; $str='abcdefg'; //要声明的字符串 file_put_conte ...