Rsync同步存储

目录

一、Rsync服务器

1.Rsync

2.同步方式

3.增量备份

4.Rsync命令

二、Rsync本地、远程

1.rsync本地复制

2.Rsync远程配置

3.配置

三、inotify

1.简介

2.inotifywait(持续监控并实时输出监控结果的命令)

3.配置:rsync+inotify


一、Rsync服务器

1.Rsync

Rsync远程同步是一款开源、快速、多功能、可实现全量和增量的本地或者远程同步很好用的一款工具

他可以不在不改变原有数据属性信息的情况下实现数据的备份迁移特性

Rsync还可以使用多种操作系统平台

Rsync可用本地复制、远程复制或者远程守护进程方式复制,他提供了大量的参数控制各个方面,允许非常灵活的实现文件的传输复制

Rsync监听端口873

Rsync运行模式C/S

2.同步方式

①全量备份②原有的数据全部传送③把原来的文件和新文件一起统一传送④全量复制,效率低

3.增量备份

在传输数据之前通过一些算法通过你有的数据和我有的数据进行对比,把不一样的数据通过网络传输

增量复制,效率高

4.Rsync命令

格式:rsync【选项】原始位置 目标位置

常用选项                            说明

-r                         递归模式,包含目录及子目录中的所有文件

-l                          对于符号链接文件仍然复制为符号链接文件

-v                         显示同步过程的详细信息

-z                         在传输文件时进行压缩goD

-p                        保留文件的权限标记

-a                         归档模式,递归并保留对象属性,等同于-rlpt

-t                         保留文件的时间标记

-g                        保留文件的属组标记(仅超级用户使用)

-o                        保留文件的属主标记(仅超级用户使用)

-H                        保留硬链接文件

-A                        保留ACL属性信息

-D                        保留设备文件及其他特殊文件

--delete                删除目标位置有而原始位置没有的文件

--checksum          根据对象的校验和来决定是否跳过文件

二、Rsync本地、远程

1.rsync本地复制

创建两个文件夹,abc def

在abc文件夹下创建两个文件

测试rsync -avz abc def/和rsync -avz abc/ def/

rsync -avz abc def/

发现把abc整个文件目录包括abc都复制进去了

rsync -avz abc/ def/

这个只把abc文件目录下的文件复制进去了

2.Rsync远程配置

①方法一

用户名@主机地址::共享模块名

rsync -avz abc@192.168.72.21::def /test

②方法二

rsync://用户名@主机地址/共享模块名

rsync -avz rsync://abc@192.168.72.21/def /test

3.配置

主机              IP地址   

rsync             192.168.72.21   rsync源服务器

client             192.168.72.22  rsync客户端服务器

①配置rsync源服务器

rpm-q rsync

yum install -y rsync

修改配置文件

vim /etc/rsyncd.conf

uid = nobody                            #root

gid = nobody                            #root

use chroot = yes                        #禁锢在源目录                                               

address = 192.168.72.21              #监听地址

port 873                    #监听端口 tcp/udp 873,可通过 cat /etc/services | grep rsync 查看                                           

log file = /var/log/rsyncd.log      #日志文件位置                 

pid file = /var/run/rsyncd.pid     #存放进程ID的文件位置                 

hosts allow = 192.168.72.0/24     #允许访问的客户机地址 (上行同步中的访问策略)

#共享模块

[def]                                 #第一个共享模块                                                           

path = /opt/test        #源目录的实际路径                              

comment = Document Root of www.ljm.com  

read only = yes                #是否为只读                                    

dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z       #同步时不再压缩的文件类型      

auth users = abc                                            #授权账户,多个账号以空格分隔                                

secrets file = /etc/ryh.db                                         #存放账户信息的数据文件     

#如采用匿名的方式,只要将其中的 “auth users” 和 “secrets file”配置项去掉即可

vim /etc/ryh.db

abc:123456                                                             #无需建立同名系统用户

chmod 600 /etc/ryh.db

#保证所有用户对源目录 /opt/test 都有读的权限

mkdir -p /opt/test

chmod +r /opt/test

ls -ld /opt/test

drwxr-xr-x 2 root root 6 11月 13 15:09 /opt/test

#启动 rsync 服务程序

rsync --daemon

netstat -natp | grep rsync

想要关闭的话,直接杀死进程,或者删除进程文件

kill $(cat /var/run/rsyncd.pid)

rm -rf /var/run/rsyncd.pid

②测试

在rsync源服务器上创建文件

cd /opt/test

echo "this is test" >> 1.txt

服务端开始测试

rsync -avz abc@192.168.72.21::def abc

免交互(免密码)配置

vim /etc/server.pass

123456

chmod 600 /etc/server.pass

删除1.txt进行测试

rsync -avz --delete --password-file=/etc/server.pass abc@192.168.72.21::def abc

三、inotify

1.简介

可以监控文件系统的变动情况,并做出通知响应

调整inotify内核参数(优化)/etc/sysctl.conf(内核参数配置文件)

参数                                   含义

inotifywait:                       #用于持续监控,实时输出结果

inotifywatch:                     #用于短期监控,任务完成后再输出结果

max_queue_events           #监控事件队列大小

max_user_instances           #最多监控实例数

max_user_watches            #每个实例最多监控文件数

2.inotifywait(持续监控并实时输出监控结果的命令)

格式:inotifywait [参数]

常见参数       说明

-m                持续进行监控

-r                  递归监控所有子对象

-q                 简化输出信息

-e                  指定要监控哪些事件类型

3.配置:rsync+inotify

①服务端:修改rsync配置文件

vim /etc/rsyncd.conf

uid = root

gid = root

[def]

read only = no                           #关闭只读,上行同步需要可写权限

kill `cat /var/run/rsyncd.pid`

netstat -natp | grep rsync

rsync –daemon                          #启动rsync

netstat -natp | grep rsync           #验证是否开启

②服务端:inotify内核参数

vim /etc/sysctl.conf

fs.inotify.max_queued_events = 32768      #监控时间队列,默认为16384

fs.inotify.max_user_instances = 1024         #最多监控实例数,默认为128

fs.inotify.max_user_watches = 1048576      #每个实例最多监控文件数,默认为8192

#当要监控的目录、文件数据量较多或者变化频繁时,建议加大参数值

sysctl -p                                                  #刷新生效

③服务端安装inotify-tools

yum install -y gcc gcc-c++

tar zxvf inotify-tools-3.14.tar.gz -C /opt

cd /opt/inotify-tools-3.14/

./configure

make && make install

#执行“inotifywait”命令,然后在服务端向/opt/test目录下添加文件、移动文件,跟踪屏幕输出结果

inotifywait -mrq -e modify,create,move,delete abc

④服务端编写触发同步脚本

vim inio.sh

#!/bin/bash

INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib abc"

RSYNC_CMD="rsync -apzH --delete --password-file=/etc/server.pass abc/ abc@192.168.72.21::def/"

$INOTIFY_CMD | while read DIRECTORY EVENT FILE

do

    if [ $(pgrep rsync | wc -l) -le 0 ] ; then

        $RSYNC_CMD

        fi

done

INOTIFY_CMD:持续监听并时时报告指定目录下的报告

RSYNC_CMD:把本地推送到对方192.168.72.21同步源的共享目录里面

inotify_cmd:监听abc的动态变化,但是无法同步,这时就需要rsync -apzH(H:符号连接)将abc目录下的数据同步,那么同步给谁,abc@192.168.72.21::def/:表示同步给rsycn源服务器;数据同步指的是:本地abc的内容同步给def的模块内/opt/test内

⑤测试

在inotify服务端的创建文件,查看

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值