文件共享服务器(三)rsync

rsync是一个用于文件同步的Linux工具,以其高效、安全的特性广泛应用于增量同步备份和迁移。它可以通过LAN/WAN快速同步多台主机,仅传输有变动的数据。文章详细介绍了rsync的概念、命令格式、配置文件,特别是通过守护进程实现远程同步和结合inotify实现的实时同步机制。此外,还提供了设置rsync守护进程和客户端同步的步骤。
摘要由CSDN通过智能技术生成

目录

前言

一、概念

(一)、概念

(二)、特性

(三)、应用场景

(四)、数据的同步方式

(五)、rsync传输模式

二、rsync命令

(一)、格式

(二)、配置文件

(三)、守护进程传输(重点)

三、rsync+inotfy实时同步

(一)、服务器端

(二)、开发客户端

总结



前言

rsync 是一个常用的 Linux 应用程序,用于文件同步,最大特点是会检查发送方和接收方已有的文件,仅传输有变动的部分(默认规则是文件大小或修改时间有变动)。

一、概念

(一)、概念

1.rsync是linux 下一个远程数据同步工具
2.他可通过LAN/WAN快速同步多台主机间的文件和目录,并适当利用rsync 算法减少数据的传输
3.会对比两个文件的不同部分,传输差异部分,因此传输速度相当快
4.rsync可拷贝、显示目录属性,以及拷贝文件,并选择性的压缩及递归拷贝

监听端口号:TCP/873

(二)、特性

1.快速

第一次传输全部,下一次传输差异
rsync在传输过程中可以实行压缩和解压缩,使用更少的带宽

2.安全

可以使用scp、ssh等方式传输
直接通过socket连接
支持匿名传输、方便进行网站镜像

(三)、应用场景

增量同步
备份迁移

(四)、数据的同步方式

数据备份:拉取(下载)
    pull
数据恢复:推送(上传)
    push

(五)、rsync传输模式

本地传输
    本地同步数据,类似于cp
远程传输
    远程同步数据,类似于scp
守护进程
    通过模块化的方式实现批量传输

二、rsync命令

(一)、格式

rsync [选项] 原始位置 目标位置

选项
    -a
        归档模式,递归并保留对象属性,等同于-r l ptgoD
    -v
        (-verbose )          显示同步过程的详细信息
    -z
        在传输文件时进行压缩

    -H

       相当于硬链接

rsync -avz root@192.168.10.10: /etc/hosts  /root/

(二)、配置文件

yum安装即可,注意注意构建基础环境及静态IP

服务器(192.168.10.10)

客户端(192.168.10.11)

/etc/rsyncd.conf

1.全局配置

address    

    独立运行时,用于指定服务器运行的 IP 地址,默认本地所有IP


port      
     指定 rsync 守护进程监听的端口号,默认 873


pid file    

     rsync 的守护进程将其 PID 写入指定的文件


log file    

     指定 rsync 守护进程的日志文件,而不将日志发送给 syslog


syslog facility  

      指定 rsync 发送日志消息给 syslog 时的消息级别


socket options  

      指定自定义 TCP 选项


lockfile  

       指定rsync的锁文件存放路径


timeout  

        超时时间

2.模块配置

path      

    指定当前模块的同步路径,该参数是必须指定的


comment  

    给模块指定一个描述


use chroot          

    在服务运行时要不要把他锁定在家目录,默认为 true


uid和gid            

    指定rsync运行用户和用户组,默认nobody


max connections      

    最大并发连接数,0为不限制


lock file            

    指定支持 max connections的锁文件。默认/var/run/rsyncd.lock


list                

    指定列出模块列表时,该模块是否被列出。默认为 true


read only          

    只读选择,默认true


write only        

    只写选择,不让客户端从服务器上下载文件。默认false


ignore errors    

    忽略IO错误,默认true


ignore nonreadable

    指定 rysnc 服务器完全忽略那些用户没有访问权限的文件


dont compress      

    用来指定那些在传输之前不进行压缩处理的文件


hosts allow  

    指定哪些主机客户允许连接该模块。默认值为 *


hosts deny  

    指定哪些主机客户不允许连接该模块


auth users
    指定用于上传的用户名


secrets files
    指定密码文件

(三)、守护进程传输(重点)

1.配置

vim /etc/rsyncd.conf

uid=rsync
gid=rsync
fake super=yes                              # 用于允许非root用户,在备份目录创建文件
list=false                                        # 默认true,允许查看本机有哪些模块
auth users=long_backup             # 用于指定认证用户
secrets file=/etc/long.passwd      # 指定认证用户密码
read only = false
max connections=4                       # 允许最大连接数
read only=false                             # 默认yes,模块目录只读权限
ignore errors                                 # 屏蔽错误报错
timeout=900                                  # 指定rsync传输超时时间
[backup]                                        #模版
path=/backup                                #路径

2.创建用户

useradd -s /sbin/nologin -M  rsync

3.创建认证用户的密码

echo 'long_backup:123456' > /etc/long.passwd
chmod 600 /etc/long.passwd

4.准备模块目录

mkdir /backup
chown rsync.rsync /backup

 

5.重启服务

systemctl restart rsyncd

6.客户端远程传输

rsync -avz /etc/hosts long_backup@192.168.10.10::backup

 

7.通过密码文件实现免密传输

客户端

vim /etc/long.passwd(123456)

chmod   600 /etc/long.passwd

rsync -avz /etc/hosts long_backup@192.168.10.10::backup --password-file /etc/long.passwd

 

 

三、rsync+inotify实时同步

(一)、服务器端

1.安装网站服务,启动,但是不写首页文件

yum install -y httpd

systemctl start httpd

2.修改主配置文件

uid = root
gid = root

[wwwroot]
    path = /var/www/html
    comment = backup export area
    read only = false
    hosts allow = 192.168.1.0/24(网络段

 systemctl restart rsyncd

(二)、开发客户端

1.安装inotify工具

 inotify-tools(tar包)
tar xf  inotify-tools-3.14.tar.gz
./configure && make && make install

2.配置内核参数

vim /etc/sysctl.conf
fs.inotify.max_user_instances = 1024
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_watches=1048576


sysctl -P

inotifywait -mrq -e modify,create,move,delete /var/www/html(开两个好验证)

 在/html里vim index.html(hello man

rsync -avz /var/www/html 192.168.10.10::wwwroot

 

3. 编写脚本

#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
RSYNC_CMD="rsync -azH --delete  /var/www/html/ 192.168.10.10::wwwroot"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
$RSYNC_CMD 
done

4.赋予执行权限

chmod +x inotify_rsync.sh

 

 

5.写入文件(开机自启)

vim /etc/rc.local
    /root/inotify_rsync.sh


总结

今天的内容初次接触到了脚本,照着打就行,后续还会有,先做初步的语法了解。rsync可用于实时更新内容,是种比较方便的软件,值得好好掌握。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值