源码编译安装、rsync命令、远程同步实现、inotify+rsync实时同步

目录

1 不积跬步,无以至千里;不积小流,无以成江海

2 环境准备

3 源码编译安装

4 数据同步

5 本地同步

6 远程同步(rsync+ssh)

7 实时数据同步

8 书写shell脚本(了解)


1 不积跬步,无以至千里;不积小流,无以成江海

2 环境准备

所有虚拟机设置SELinux运行模式

    [root@server ~]# getenforce
    Enforcing
    [root@server ~]# setenforce 0  #当前设置
    [root@server ~]# getenforce
    Permissive
    [root@server ~]# vim   /etc/selinux/config
    SELINUX=permissive

3 源码编译安装

RPM软件包:rpm -ivh 或者 yum -y install

源码包----开发工具gcc与make----》可以执行的程序-----》运行安装

•主要优点

–获得软件的最新版,及时修复bug

–软件功能可按需选择/定制,有更多软件可供选择

–源码包适用各种平台

–……

步骤1:安装开发工具gcc与make,释放源代码至指定目录

步骤2:tar解包,释放源代码至指定目录

步骤3:./configure 配置,指定安装目录/功能模块等选项

步骤4:make 编译,生成可执行的二进制程序文件

步骤5:make install 安装,将编译好的文件复制到安装目录

真机tools.tar.gz 传递数据到虚拟机

真机为Linux:

]# ls /linux-soft/s1

]# scp /linux-soft/s1/tools.tar.gz root@192.168.88.240:/root

真机为windows:windterm进行上传tools.tar.gz

虚拟机A

1.安装开发工具

    [root@server ~]# yum  -y   install  gcc   make
    [root@server ~]# rpm   -q   gcc
    [root@server ~]# rpm   -q   make
    [root@server ~]# 

2.进行解压缩

    [root@server ~]# tar  -xf  /root/tools.tar.gz  -C  /usr/local
    [root@server ~]# ls   /usr/local/tools
    inotify-tools-3.13.tar.gz 

3.进行tar解包

    [root@server ~]# tar -xf /usr/local/tools/inotify-tools-3.13.tar.gz -C /usr/local/          
    [root@server ~]# ls    /usr/local/
    [root@server ~]# cd     /usr/local/inotify-tools-3.13/
    [root@server ~]# ls

4.运行configure脚本

作用1:检测当前系统是否安装gcc

作用2:指定安装位置与功能

作用3:生成Makefile文件(制作程序的大纲,做菜的菜谱)

    [root@server ~]# cd   /usr/local/inotify-tools-3.13/
    [root@server ~]# ./configure  --help   #查看帮助信息,大概浏览一下
    [root@server ~]# ./configure  --prefix=/opt/myrpm #指定安装位置,此步骤不产生相应的目录         

常见的报错信息:gcc开发工具没有安装

checking for gcc... no

checking for cc... no

checking for cl.exe... no

configure: error: no acceptable C compiler found in $PATH

See `config.log' for more details.

5.进行make编译,变成可以执行的程序(放在内存中)

    [root@server ~]# cd /usr/local/inotify-tools-3.13/
    [root@server inotify-tools-3.13]# make

6.进行make install安装

    [root@server ~]# cd /usr/local/inotify-tools-3.13/
    [root@server inotify-tools-3.13]# make   install 
    [root@server inotify-tools-3.13]# ls   /opt/
    [root@server inotify-tools-3.13]# ls   /opt/myrpm/
    [root@server inotify-tools-3.13]# ls   /opt/myrpm/bin/

4 数据同步

• 命令用法

rsync [选项...] 源目录 目标目录

• rsync操作选项

-n:测试同步过程,不做实际修改

--delete:删除目标文件夹内多余的文档

-a:归档模式,相当于-rlptgoD

-v:显示详细操作信息

-X:保持acl策略不变

5 本地同步

    [root@server ~]# mkdir   /mydir    /todir               
    [root@server ~]# echo haha >  /mydir/h.txt      
    [root@server ~]# rsync  -avX  --delete   /mydir/      /todir   #同步目录的内容
    [root@server ~]# ls   /mydir/
    [root@server ~]# ls   /todir/
    [root@server ~]# touch   /todir/a.txt          
    [root@server ~]# ls  /todir/
    [root@server ~]# rsync  -avX  --delete  /mydir/      /todir
    [root@server ~]# ls   /todir/
    [root@server ~]# ls   /mydir/

6 远程同步(rsync+ssh)

• 与远程的 SSH目录保持同步

下行:rsync [...] user@host:远程目录 本地目录

上行:rsync [...] 本地目录 user@host:远程目录

虚拟机A的/mydir目录的内容与虚拟机B的/mnt进行同步

虚拟机A:

    [root@server ~]# rsync  -avX  --delete  /mydir/    root@192.168.88.2:/mnt
    ……..connecting (yes/no)? yes
    root@192.168.88.2's password:         #输入密码

虚拟机B:

    [root@server ~]# ls   /mnt             

7 实时数据同步

虚拟机A的/mydir/目录的内容与虚拟机B的/mnt进行同步

实现ssh无密码验证(公钥与私钥)

虚拟机A

1.虚拟机A生成公钥与私钥

    [root@server ~]# ssh-keygen         #一路回车
    [root@server ~]# ls    /root/.ssh/
    id_rsa(私钥)   id_rsa.pub(公钥)    known_hosts(记录曾经远程管理过的机器)

 2.虚拟机A将公钥传递给虚拟机B

    [root@server ~]# ssh-copy-id     root@192.168.88.2
    [root@server ~]# rsync  -avX --delete   /mydir/    root@192.168.88.2:/mnt

监控目录内容变化工具

• 基本用法

inotifywait [选项] 目标文件夹

• 常用命令选项

-m,持续监控(捕获一个事件后不退出)

-r,递归监控、包括子目录及文件

-q,减少屏幕输出信息

-e,指定监视的 modify、move、create、delete、attrib 等事件类别

    inotifywait  监控目录内容变化
    rsync  -avX  --delete   /mydir/    root@192.168.88.2:/mnt

8 书写shell脚本(了解)

脚本:可以运行一个文件,实现某种功能

中文:新建用户zhangsan shell: useradd zhangsan

[root@server /]# vim    /root/hello.sh  
echo  hello  world
hostname
id  root
ifconfig   |   head  -2
[root@server /]# chmod   +x   /root/hello.sh  #所有人赋予执行权限
[root@server /]# /root/hello.sh   #绝对路径执行脚本
重复性:循环解决  
格式:  
     while   条件
     do
          重复执行的事情
     done
[root@server /]# vim   /etc/rsync.sh   
while   /opt/myrpm/bin/inotifywait  -rqq   /mydir/
do
rsync -aX  --delete   /mydir/   root@192.168.88.2:/mnt
done
[root@server /]# chmod  +x  /etc/rsync.sh  #赋予执行权限
[root@server /]# /etc/rsync.sh   & #放入后台运行脚本程序
[root@server /]# jobs  -l    #-l选项  显示进程的pid
[1]    + 17707 运行中               /etc/rsync.sh &
[root@server /]# kill  17707      #停止脚本,可以杀死进程

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现实时同步,可以结合使用rsyncinotify工具。 首先,使用rsync命令进行初始的文件同步。你可以使用如下命令: ``` rsync -avz --delete source_directory/ destination_directory/ ``` 这将同步源目录(source_directory)中的文件到目标目录(destination_directory)。-a`选项表示使用归档模式,保持文件属性和权限不变。`-v`选项表示输出详细的同步信息。`-z`选项表示启用压缩来加快传输速度。`--delete`选项表示删除目标目录中不存在于源目录中的文件。 接下来,你可以使用inotify工具监控源目录的文件变化,并在有变更时自动触发rsync命令进行实时同步inotifyLinux内核提供的一种机制,可以监视文件系统中的事件,如文件或目录的创建、修改、删除等。 你可以使用inotifywait命令来监控文件系统事件,并在事件发生时执行rsync命令。以下是一个示例: ``` #!/bin/bash SOURCE_DIR="/path/to/source_directory" DESTINATION_DIR="/path/to/destination_directory" inotifywait -m -r -e modify,create,delete,move "$SOURCE_DIR" | while read path action file; do rsync -avz --delete "$SOURCE_DIR/" "$DESTINATION_DIR/" done ``` 上述脚本监视源目录中的修改、创建、删除和移动事件,并在事件发生时执行rsync命令进行同步。你可以将脚本保存为一个.sh文件,并使用`chmod +x script.sh`命令赋予执行权限。 这样,当源目录中的文件发生变化时,inotify会捕捉到事件并触发rsync命令进行实时同步到目标目录。 请注意,以上示例仅为演示目的,并没有考虑到错误处理、日志记录等方面。在实际应用中,你可能需要对脚本进行适当的修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值