源码包的安装、rsync同步、inotify监测
一、源码包的安装
1.源码包的作用:yum 使用的是rpm包,rpm包安装的不能指定安装位置
源码包可以按需选择/定制,及时修复bug ,适用于各种平台
2、大致过程:源码包——>make gcc将源码包变成可执行的程序---->运行安装
3.这就要求make,gcc软件支持,yum 下安装make 和gcc
4、下载源码包 wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
5 、解压源码包:[root@localhost ~]# tar -xf inotify-tools-3.14.tar.gz -C /opt/
解压完可以在解压目录下查看:
[root@localhost ~]# ls /opt
inotify-tools-3.14 rh
[root@localhost ~]# ls /opt/inotify-tools-3.14
aclocal.m4 ChangeLog config.h.in configure COPYING INSTALL libinotifytools Makefile.am man NEWS src
AUTHORS config.guess config.sub configure.ac depcomp install-sh ltmain.sh Makefile.in missing README
6、./configure配置{目的就是为了指定安装目录和功能模块 并且此条命令可以检测是否以及安装了gcc }
但是一定要注意,该配置是源码在哪就在哪操作,即要cd 到刚解压到的目录中去
[root@localhost ~]# cd /opt/inotify-tools-3.14 #cd 不能忘
[root@localhost inotify-tools-3.14]# ls
aclocal.m4 ChangeLog config.h.in configure COPYING INSTALL libinotifytools Makefile.am man NEWS src
AUTHORS config.guess config.sub configure.ac depcomp install-sh ltmain.sh Makefile.in missing README
使用./configure --prefix =指定的安装目录位置
(比如这里指定/mnt/myrpm,但是此条命令结束,/mnt/myrpm并不会生成,这里只是指定)
若gcc未装,则会报类似gcc--->no 的错误
[root@localhost inotify-tools-3.14]# ./configure --prefix=/mnt/myrpm
checking for a BSD-compatible install... /bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make sets $(MAKE)... (cached) yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
7.make编译,生成可执行的二进制文件
#make 命令即可
8、make install 安装 将编译好的文件复制到安装目录,这里才真正生成 之前指定的安装文件
查看一下:
[root@localhost inotify-tools-3.14]# ls /mnt/myrpm/
bin include lib share
[root@localhost inotify-tools-3.14]# ls /mnt/myrpm//bin
inotifywait inotifywatch
二、rsync同步
rsync [选项] 源目录 目标目录
复制:完全拷贝到目标文件下
同步:增量拷贝,只传输传输变化过的数据
选项:-n : 测试同步过程不做实际修改
--delete:删除目标文件夹中多余的文档
-a :归档模式
-v:显示详细的操作信息
-z: 传输过程中启用压缩/解压
1. 本地同步: rsync 本地目录 1 本地目录2 (同步整个文件夹)
rsync 本地目录1/ 本地目录2 (同步目录下的文件)
如:
[root@localhost ~]# mkdir -p /haha/happy /xixi
[root@localhost ~]# rsync -av /haha /xixi
sending incremental file list
haha/
haha/happy/
haha/happy/1.txt
sent 165 bytes received 47 bytes 424.00 bytes/sec
total size is 6 speedup is 0.03
[root@localhost ~]# ls /xixi
haha
这里/haha 时把目录haha 也同步了
[root@localhost ~]# rsync -av /haha/ /xixi
sending incremental file list
./
happy/
happy/1.txt
sent 152 bytes received 46 bytes 396.00 bytes/sec
total size is 6 speedup is 0.03
[root@localhost ~]# ls /xixi
haha happy
这里用了/haha/ 则只同步了haha下的内容,一般情况下都是这样的同步
2.远程同步:
上行: rsync [选项] user@host:远程目录 本地目录
下行:rsync [选项] 本地目录 user@host:远程目录
[root@localhost ~]# rsync -av /haha/ root@192.168.142.138:/haha
root@192.168.142.138's password:
sending incremental file list
created directory /haha
./
happy/
happy/1.txt
sent 156 bytes received 74 bytes 5.17 bytes/sec
total size is 6 speedup is 0.03
[root@localhost ~]#
可以看出来,远程同步时需要密码验证,这里可以使用公钥和私钥来做到免密码的同步
只要同步一方A的私钥和另一方握有A公钥的B 实现公钥和私钥的匹配,即可免密
这里ssh-keygen 来生成公钥私钥
[root@localhost ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:8boQ5FfByR1t/kwWvsg5L70YqIOxNHy4xXLEdbfykrQ root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
| o.o.o
| +o..oo |
| . o o .oo o|
| o * o.oo|
| + S . o B=.|
| X * .E oo|
| o % . .= |
| = o. .oo |
| ... ....|
+----[SHA256]---
使用ssh-copy-id root@B的IP来将A的公钥发送给B
公钥私钥的生成位置为/root/.ssh
B中的/root/.ssh/authorized-keys 为公钥存在位置
[root@localhost ~]# ssh-copy-id root@192.168.142.138
此时,再使用同步就不需要密码了
[root@localhost ~]# rsync -av /haha/ root@192.168.142.138:/haha
sending incremental file list
sent 93 bytes received 13 bytes 70.67 bytes/sec
total size is 6 speedup is 0.06
三、实时监测
同步之后,要做到只源文档内容发生变化,那么同步的文档也必须实时改变,至于怎么样知道文档内容改变了,这就需要inotify来进行监测
一般会将inotify这个包放在/usr/local下,把源码下载时的inotify的包cp 到/usr/local下,然后再经过./configure make make install即可
这也是在A下操作的
[root@localhost ~]# ls /usr/local/bin
inotifywait inotifywatch
观察到inotifywait就是成功了,inotifywait 是监测目录变化所用的程序
比如在/haha下再新建一个目录(另开一个终端操作),可以看到inotifywait 下发生了变化
[root@localhost local]# inotifywait -rq /haha/
/haha/ CREATE,ISDIR xixixi
################################################################################
目前只是监测成功了,如何做到一监测到目录下的变化就自动同步,这里需要借助shell脚本来实现
shell脚本所在位置:/root/rsync.sh
#!/bin/bash
while inotifywait -rqq /haha/
do
rsync -a --delete /haha/ root@192.168.142.138:/haha/
done
[root@localhost ~]# ls -ld /root/rsync.sh
-rw-r--r--. 1 root root 112 9月 18 14:54 /root/rsync.sh
[root@localhost ~]# chmod +x /root/rsync.sh
[root@localhost ~]# ls -ld /root/rsync.sh
-rwxr-xr-x. 1 root root 112 9月 18 14:54 /root/rsync.sh
要给脚本执行权限
这个时候运行这个脚本[root@localhost ~]# /root/rsync.sh
再开一个终端改变A里的/haha B中的/haha 紧接着改变
源码包的安装、rsync同步、inotify监测的更多相关文章
- Linux学习笔记15—RPM包的安装OR源码包的安装
RPM安装命令1. 安装一个rpm包rpm –ivh 包名“-i” : 安装的意思“-v” : 可视化“-h” : 显示安装进度另外在安装一个rpm包时常用的附带参数有:--force : 强制安装, ...
- zabbix 3.2.2 server端(源码包)安装部署 (一)【转】
环境准备: 操作系统 CentOS 6.8 2.6.32-642.11.1.el6.x86_64 zabbix server 172.16.10.150 zabbix agent 172.16.10. ...
- CentOS 7.2使用源码包编译安装MySQL 5.7.22及一些操作
CentOS 7.2使用源码包编译安装MySQL 5.7.22及一些操作 2018年07月05日 00:28:38 String峰峰 阅读数:2614 使用yum安装的MySQL一般版本比较旧,但 ...
- Linux——【rpm、yun、源码包】安装
RPM包或者安装源码包 在windows下安装一个软件很轻松,只要双击.exe的文件,安装提示连续“下一步”即可,然而linux系统下安装一个软件似乎并不那么轻松,因为我们不是在图形界面下.所以我们要 ...
- nginx + mysql + php相关源码包及安装
nginx + mysql + php安装 引言 完整的搭建一个nginx+php-fpm+mysql的服务器,一直是我向做的,不过一致没有完成过,这次工作需要,终于安装成功了 我列出了我遇到的一些问 ...
- LAMP 环境搭建之源码包编译安装
mysql用的二进制包安装. Apache php 用的源码包 mysql版本5.5.46 Apache版本2.4.7 PHP版本:5.5 mysql安装部分参考了阿铭linux的内容. 这是 ...
- zabbix 3.2.7 (源码包)安装部署
Zabbix 3.2.7 + CentOS7 安装 环境准备: 操作系统 CentOS Linux release 7.2.1511 (Core) zabbix server 10.30.94.60 ...
- MySQL源码包编译安装
+++++++++++++++++++++++++++++++++++++++++++标题:MySQL数据库实力部署时间:2019年3月9日内容:MySQL源码包进行编译,然后部署MySQL单实例重点 ...
- CentOS 7.4 使用源码包编译安装MySQL 5.7.20
使用yum安装的MySQL一般版本比较旧,但是运行稳定.如果想要尝试最新的功能或者需要指定特殊的功能的话,就需要手工进行编译安装了. 一.下载安装包 (一).先下载MySQL源码,网址为:https: ...
随机推荐
- Django之视图层的简介与使用
Django的View(视图) 一个视图函数(可以是类),简称视图,是一个简单的Python 函数(可以是类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个 ...
- Smali语言基础语法
1.Smali语言基础语法-数据类型与描述符 smali中有两类数据类型:基本类型和引用类型.引用类型是指数组和对象,其它都是基础类型. 基本类型以及每种类型的描述符: Java类型 类型描述符 说明 ...
- Ubuntu18.04 安装谷歌BBR
说明:Ubuntu 18.04前几天发布了,改变挺大的,内核也直接升到了正式版4.15,而BBR内核要求为4.9,也就是说满足了,所以我们不需要换内核就可以很快的开启BBR,这里简单说下方法. 提示: ...
- 如何利用C# Roslyn编译器写一个简单的代码提示/错误检查?
OK, 废话不多说,这些天在写C#代码时突然对于IDE提示有了一些想法,之前也有了解过,不过并没有深入. 先看个截图: 一段再简单不过的代码了,大家注意看到 count 字段下面的绿色波浪线了吗,我们 ...
- 禁止浏览器缓存- make sure web page is not cached
如何禁止浏览器缓存,网上搜到的解决方法都测试无效. 基本上全都是 Cache-Control: no-cache Pragma: no-cache Expires: 0 Google了一下,找到了解决 ...
- vue-music 使用better-scroll遇到轮播图不能自动轮播
根据vue-music视频中slider组建的使用,当安装新版本的better-scroll,轮播组件,不能正常轮播 这是因为,better-scroll发布新版本之后,参数设置发生改变 这是旧版本: ...
- Spring Boot集成JSON Web Token(JWT)
一:认证 在了解JWT之前先来回顾一下传统session认证和基于token认证. 1.1 传统session认证 http协议是一种无状态协议,即浏览器发送请求到服务器,服务器是不知道这个请求是哪个 ...
- RESTFul API最佳实践
RESTful API最佳实践 RESTful API 概述 基本概念 REST 英文全称:Representational State Transfer,直译为:表现层状态转移.首次是由Roy Th ...
- 建议收藏:.net core 使用导入导出Excel详细案例,精心整理源码已更新至开源模板
还记得刚曾经因为导入导出不会做而发愁的自己吗?我见过自己前同事因为一个导出改了好几天,然后我们发现虽然有开源的库但是用起来却不得心应手,主要是因为百度使用方案的时候很多方案并不能解决问题. 尤其是尝试 ...
- 学习笔记31_ORM框架ModelFirst设计数据库
ModelFirst就是先设计实体数据类型,然后根据设计的数据类型,生成数据库表 1.新建项--ADO.NET实体数据模型--空数据模型--进入模型设计器(点击xxx.edmx文件也能进入设计器). ...