inotify

Linux&&rsync远程同步

泪湿孤枕 提交于 2020-02-05 06:27:24
Linux&&rsync远程同步 基于SSH源的rsync实现(定时同步) 服务端部署步骤 客户端部署步骤 实现免密钥的rsync或ssh或scp 实现定时任务rsync同步 基于inotify的rsync实现(实时同步) Linux内核的inotify机制 服务端部署步骤 安装辅助工具inotify-tools 通过inotifywait触发rsync同步操作 rsync实现源服务器与客户端的数据同步 服务端部署步骤 客户端部署步骤 基于rsync源的免交互实现 rsync常见错误一 rsync常见错误二 一款快速增量备份工具 命令选项: -r:递归模式,包含目录及子目录中所有文件 -l:对于符号链接文件仍然复制为符号链接文件 -p:保留文件的权限标记 -t:保留文件的时间标记 -g:保留文件的属组标记(仅超级用户使用) -o:保留文件的属主标记(仅超级用户使用) -D:保留设备文件及其他特殊文件 备份操作类型: rsync源服务器: 指备份操作的远程服务器,也称备份源 备份源分为rsync源和SSH源两种 基于SSH源的rsync实现(定时同步) 服务端部署步骤 服务端准备好 存放数据的目录 和 需要备份的数据 即可。 客户端部署步骤 确认网络环境,客户端能够访问到服务端。 #创建 存放数据的目录 mkdir -p /var/www/html #从远处往本地同步:rsync

【ARTS】01_05_左耳听风-20181210~1216

谁都会走 提交于 2020-02-05 02:31:39
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algorithm 【leetcode】125验证回文串 https://leetcode.com/problems/valid-palindrome/ 1)problem 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 2: 输入: "race a car" 输出: false 2)answer 1、普通思路 把数字和字符提取出来,然后如果是字母就转换为小写。加到新的字符串中。 对于这个新的字符串,使用一个多条件循环,分别从字符串头、字符串尾遍历字符串的中间值,如果不一致就退出。直到遍历结束还是一致就判定为回文字符串。 2、高级思路 在discuss看到的答案。 用一个大循环分别从字符串头、字符串尾遍历字符串的中间值,里面两个小循环,用isalnum()函数判断是不是字母数字,如果不是就向前移动指针。 https://leetcode.com/problems/valid-palindrome

Linux系统实时数据同步inotify+rsync

試著忘記壹切 提交于 2020-02-02 01:35:05
一、inotify简介   inotify是Linux内核的一个功能,它能监控文件系统的变化,比如删除、读、写和卸载等操作。它监控到这些事件的发生后会默认往标准输出打印事件信息。要使用inotify,Linux内核版本必须是大于2.6.13,在这之前的内核都没有这个功能。我们可以利用inotify去监控我们要监控的资源,当资源发生变化时,我们扑捉它的事件,从而触发同步数据等操作。 二、inotify软件介绍   inotify是内核的一个功能,众所周知内核的功能我们必须要配合工具才能使用,通常情况下用户要使用内核的功能,都需要用户空间的软件去调用才可以达到使用内核的功能的目的,用户是无法直接操内核的。实现inotify软件有inotify-tools、sersync、lrsyncd。我们这里以inotify-tools这个软件包为例进行实验;inotify-tools包主要有两个文件,一个是inotifywait: 在被监控的文件或目录上等待特定文件系统事件(open close delete等)发生,常用于实时同步的目录监控;一个是inotifywatch:收集被监控的文件系统使用的统计数据,指文件系统事件发生的次数统计。通常情况下我们使用iontifywait就可以了。接下来我们来安装inotify-tools 三、inotify软件安装和使用  

Linux 监控文件事件

一个人想着一个人 提交于 2020-01-28 05:14:11
某些应用程序需要对文件或者目录进行监控,来侦测其是否发生了某些事件。Linux很贴心的为我们提供了inotify API,也是Linux的专有。 inotify API 在使用之前一定要有一个inotify实例,int inotify_init(void);返回一个inotify实例的描述符。 添加监控描述符,int inotify_add_watch(int fd,const char *pathname,unit32_t mask);参数解释:fd就是init返回的描述符,pathname就是你要监控的文件或者目录的路径名,mask这个是用来表示你要监控的事件类型。 删除监控描述符,int inotify_rm_watch(int fd,uint32_t wd);参数解释:fd还是你要操作的描述符,wd是你要删除监控描述符号。 inotify事件 inotify事件实现原理 原理肯定需要数据结构来支撑了,先来一个inotify的通知事件数据结构: struct inotify_event{ int wd;监控描述符 uint32_t mask;发生的事件 uint32_t cookie;这个专为文件重命名而生,源文件所在监控会产生一个IN_MOVED_FROM事件,重命名后文件所在监控会产生一个IN_MOVED_TO事件(如果在同一个监控下重命名,会对这个监控项产生这两个事件)

Linux内核Inotify机制学习笔记

牧云@^-^@ 提交于 2020-01-26 02:50:33
一、Inotify简介: Inotify是一种文件变化通知机制,Linux内核从2.6.13开始引入。它是一个内核用于通知用户空间程序文件系统变化的机制。开源社区提出用户态需要内核提供一些机制,以便用户态能够及时地得知内核 或底层硬件设备发生了什么,从而能够更好地管理设备,给用户提供更好的服务,如 hotplug、udev 和 inotify 就是这种需求催生的。 Hotplug 是一种内核向用户态应用通报关于热插拔设备一些事件发生的机制,桌面系统能够利用它对设备进行有效的管理, udev 动态地维护 /dev 下的设备文件, inotify 是一种文件系统的变化通知机制,如文件增加、删除等事件可以立刻让用户态得知。 Inotify 是为替代 dnotify 而设计的,它克服了 dnotify 的缺陷,提供了更好用的,简洁而强大的文件变化通知机制: (1) Inotify 不需要对被监视的目标打开文件描述符,而且如果被监视目标在可移动介质上,那么在 umount 该介质上的文件系统后,被监视目标对应的 watch 将被自动删除,并且会产生一个 umount 事件。 (2) Inotify 既可以监视文件,也可以监视目录。 (3) Inotify 使用系统调用而非 SIGIO 来通知文件系统事件。 (4) Inotify 使用文件描述符作为接口,因而可以使用通常的文件 I/O

Linux下监控文件系统

前提是你 提交于 2020-01-24 13:53:59
Linux下监控文件系统 Linux的后台程序通常在机器没有问题的情况下,需要长期运行(比如说数个月,甚至是数年)。但是,程序的配置文件有时候是需要定期作调整。为了不影响程序对外服务(不重启),动态加载配置文件是一种非常常见的需求。通过监控某个文件的创建、删除和修改等事件,可以很方便做出对应的动作(比如说reload)。 1. Linux下监控文件系统的常用方法 监控配置文件或配置文件目录的变化,一种可行的方法是程序启动的时候记录下文件(或目录)的修改时间,周期性检查(比如说一秒一次)文件是否已经被修改,来决定是否需要重新加载配置文件。 另一种更为优雅的办法是使用Linux系统从内核层面支持的系统API dnotify、inotify或者fanotify。inotify API提供一个文件描述符,可以在该文件描述符上注册对指定的文件或者目录的文件系统事件(文件删除、文件修改和文件创建),然后通过read系统调用读取该文件描述法上的事件。 2. 使用stat或fstat监控Linux文件系统 通过周期性地获取被监控文件的状态,stat和fstat可以帮助用户监控指定文件的状态。 int stat(const char *path, struct stat *buf); int fstat(int fd, struct stat *buf); struct stat { dev_t

实时同步sersync

旧时模样 提交于 2020-01-22 08:13:47
实时同步sersync实战 什么是实时同步 实时同步是一种只要当前目录发生变化则会触发一个事件,事件触发后会将变化的目录同步至远程服务器。 sersync和rsync+inotify对比 提到数据同步就必然会谈到 rsync ,一般简单的服务器数据传输会使用 ftp/sftp 等方式,但是这样的方式效率不高,不支持差异化增量同步也不支持实时传输。针对数据实时同步需求大多数人会选择 rsync+inotify-tools 的解决方案,但是这样的方案也存在一些缺陷(文章中会具体指出), sersync 是国人基于前两者开发的工具,不仅保留了优点同时还强化了实时监控,文件过滤,简化配置等功能,帮助用户提高运行效率,节省时间和网络资源。 项目地址 sersync项目实战 1)环境准备 角色 外网IP(NAT) 内网IP(LAN) 安装工具 web01 eth0:10.0.0.7 eth1:172.16.1.7 部署代码(提交作业) nfs-server eth0:10.0.0.31 eth1:172.16.1.31 rsync+inotify+sersync backup eth0:10.0.0.41 eth1:172.16.1.41 rsync-server 1.实时同步哪台服务器的目录,那么就在哪台服务器上安装 sersync 2.只要安装 sersync 就必须安装 rsync 和

NFS+inotify实时同步

為{幸葍}努か 提交于 2020-01-20 07:09:05
Inotify简介 Inotify是一种文件系统事件通告机制,能够实时监控文件系统下文件的访问、修改、删除等各种变化情况并将其作为事件通告给用户态应用程序。Linux内核从2.6.13版本后已经集成了Inotify的功能,用户只需安装inotify应用程序即可实现对文件系统的监控。 配置Rsync服务端 rpm -qa | grep rsync vim /etc/rsyncd.conf uid = rsync #客户端进行数据传输时所使用的用户 gid = rsync #客户端进行数据传输时所使用的用户组 user chroot = no #安全相关 max connections = 200 #最大连接数 timeout = 300 #超时时间,客户端连接后300s不传输自动断开 pid file = /var/run/rsyncd.pid #进程号文件 lock file = /var/run/rsync.lock #锁文件 log file = /var/log/rsyncd.log #日志文件 ignore errors #忽略错误 read only = false #可写 list = false #客户端不能ls等进行列表 hosts allow = 172.16.1.0/24 #允许连接的主机 #hosts deny = 0.0.0.0/32 #拒绝的主机 auth

Linux(10):期中架构(2)--- NFS存储服务 & 实时同步

孤街浪徒 提交于 2020-01-20 06:45:41
1. 共享存储服务概念: # NFS是Network File System的缩写,中文意思是网络文件系统, # 它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录。 2. NFS共享存储服务的应用: # 将数据存储到一台服务器上,实现数据统一一致,共享访问 # NFS存储服务器中主要存储哪些信息:用户上传的图片 音频 视频 附件等信息 # NFS服务是分为服务端和客户端 # 存储服务器:NFS服务端 网站web服务器:NFS客户端 # 实现共享存储好处: 01. 实现数据统一一致 02. 节省网站磁盘资源 03. 节省网站访问带宽 3. NFS共享存储服务的原理: ①. nfs服务端创建共享存储目录 ②. nfs客户端创建远程挂载点目录 ③. nfs客户端进行远程挂载 ④. 实现客户端数据信息统一一致 4. NFS服务重要概念说明: 4.1 NFS共享文件系统RPC服务介绍 4.2 NFS共享文件系统RPC服务由来: # NFS服务启动进程和端口过程,需要由rpc服务统一管理 5. NFS服务部署实践过程 5.1 NFS服务端部署流程: # 第一步:检查服务软件是否安装 [root@nfs01 ~]# rpm -qa|egrep "nfs-utils|rpcbind" # 检查 nfs 和 rpc 服务是否已经安装 # 第二步:进行软件服务安装

linux 实时同步inotify

十年热恋 提交于 2020-01-20 03:58:05
#实时同步inotify 1、inotify简介 inotify是一种强大的,细腻度的,异步的文件系统事件监控机制,linux内核从2.6.13起,加入了inotify支持,通过INOTIFY可以监控文件系统中添加、删除、修改、移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tloos就是实施这样监控的软件。 2、inotify实施 检查rsync daemon服务是否服务正常,可以推送数据实施同步 ps -ef |grep rsync|grep -v grep root 5959 1 0 18:52 ? 00:00:00 rsync --daemon 1)坚持当前系统是否支持inotify uname -r 版本在2.6.13以上才支持 2.6.32-504.el6.x86_64 # ls -l /proc/sys/fs/inotify -rw-r--r-- 1 root root 0 Apr 4 20:23 max_queued_events -rw-r--r-- 1 root root 0 Apr 4 20:23 max_user_instances -rw-r--r-- 1 root root 0 Apr 4 20:23 max_user_watches #显示这三个文件则证明支持INOTIFY proc/sys/fs