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一致。

优点:

  1. 增量备份,支持socket(daemon),集中备份(支持推拉,都是以客户端为参照物)。
  2. 远程SHELL通道模式还可以加密(SSH)传输,socket(daemon)需要加密传输,需配合vpn服务。

缺点:

  1. 大量小文件时候同步的时候,比对时间较长,有的时候,rsync进程可能会停止。
  2. 同步大文件,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的更多相关文章

  1. Linux运维: Rsync同步数据(ubuntu16.04+windows10)

    rsync同步数据 -环境:Linux (ubuntu16.04) + windows10 Linux: 安装 sudo apt-get install rsync rsync --version 查 ...

  2. Linux运维入门到高级全套常用要点

    Linux运维入门到高级全套常用要点 目 录 1. Linux 入门篇................................................................. ...

  3. Linux运维之道(大量经典案例、问题分析,运维案头书,红帽推荐)

    Linux运维之道(大量经典案例.问题分析,运维案头书,红帽推荐) 丁明一 编   ISBN 978-7-121-21877-4 2014年1月出版 定价:69.00元 448页 16开 编辑推荐 1 ...

  4. 详解linux运维工程师入门级必备技能

    详解linux运维工程师入门级必备技能 | 浏览:659 | 更新:2013-12-24 23:23 | 标签:linux it自动化运维就是要很方便的运用各种工具进行管理维护,有效的实施服务器保护 ...

  5. linux 运维知识体系

    这里将会介绍一下,LINUX运维工程师的知识体系. 只能说是个人理解吧.并不是必要或者充分的,仅供网友参考. 大部分本博客都有涉及,并不完整. 1.LINUX运维基础 1.1.LINUX系统的简介,分 ...

  6. linux运维基础__争取十月前研究的差不多

    转来的一编,考虑在十月前研究的差不多 linux运维人员基础 1.很多地方经常会用到的rsync工具 实施几台服务器的同步效果 我们公司就是使用这个工具完成服务器的游戏的服务端和客户端同步,有几个文章 ...

  7. linux运维工作内容及岗位要求

    什么是Linux?大家日常使用电脑听歌.打游戏娱乐或处理日常工作时,接触到最多的就是Windows操作系统,电脑如果不安装Windows系统是无法进行娱乐和工作的,所有的软件程序都必须运行在操作系统之 ...

  8. linux运维工程师面试题收集

    面试必考 mysql5和mysql6 有什么区别 mysql-server-5.5:默认引擎改为Innodb,提高了性能和扩展性,提高实用性(中继日志自动恢复) mysql-server-5.6:In ...

  9. 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路

    做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...

随机推荐

  1. MR案例:路径过滤PathFilter

    问题描述:现有一批cookie日志,按照日期进行存放,如目录 “dir/2015-08-08” 下存放2015-08-08这一天的所有cookie.而目录 “/2015-08-08/” 下又根据数据文 ...

  2. PHP 根据IP地址获取所在城市

    header('Content-Type:text/html;Charset=utf-8'); function GetIp(){ $realip = ''; $unknown = 'unknown' ...

  3. 爬虫框架Scrapy之Spider

    Spider Spider类定义了如何爬取某个(或某些)网站.包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item). 换句话说,Spider就是您定义爬取的动作及 ...

  4. Windows下实现mysql定时备份

    1.写MySQL备份bat处理 @echo off set "yMd=%date:~,4%%date:~5,2%%date:~8,2%" set "hms=%time:~ ...

  5. ADO.NET 使用DELETE语句批量删除操作,提示超时,删除失败,几种优化解决思路

    起因是如此简单的一句sql 提示:Timeout 时间已到.在操作完成之前超时时间已过或服务器未响应. 提供几种解决思路: 1.检查WHERE条件中字段是否已建索引 2.检查是否被其他表引用,引用表外 ...

  6. KVM irqfd and ioeventfd

    In previous article vhost architecture we mentioned that vhost and the guest signal each other by ir ...

  7. 前端构建大法 Gulp 系列

    参考: 前端构建大法 Gulp 系列 (一):为什么需要前端构建 前端构建大法 Gulp 系列 (二):为什么选择gulp 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gulp ...

  8. Kotlin------流程控制语句

    流程控制语句是编程语言中的核心之一.可分为: 分支语句(if . when) 循环语句(for.while )和 跳转语句 (return . break .continue.throw)等. if表 ...

  9. Nginx 出现413 Request Entity Too Large得解决方法

    Nginx 出现413 Request Entity Too Large得解决方法 默认情况下使用nginx反向代理上传超过2MB的文件,会报错413 Request Entity Too Large ...

  10. uva10002凸包重心

    把每个三角形看成一个质点,坐标就是各自的重心, #include<map> #include<set> #include<cmath> #include<qu ...