linux Rsync

目录

概念

特性

应用场景

同步数据方式

rsync传输模式

rsync应用

rsync命令

配置守护进程传输流程

rsync+inotfy实时同步


概念


rsync是linux 下一个远程数据同步工具

他可通过LAN/WAN快速同步多台主机间的文件和目录,并适当利用rsync 算法减少数据的传输

会对比两个文件的不同部分,传输差异部分,因此传输速度相当快

rsync可拷贝、显示目录属性,以及拷贝文件,并选择性的压缩及递归拷贝


特性


可以镜像保存整个目录树和文件系统

可以很容易做到保持原来文件的权限、时间、软硬链接等等。

无须特殊权限即可安装。

快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。

安全:可以使用scpssh等方式来传输文件,当然也可以通过直接的socket连接。

支持匿名传输,以方便进行网站镜像 


应用场景


增量同步、备份迁移

在同步数据的时候,默认情况下,rsync通过其独特的quick check算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可根据权限、属主等属性的变化同步,但是需要制定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可实现快速的同步备份数据。


同步数据方式


数据备份:拉取(下载)

数据恢复:推送(上传)


rsync传输模式


本地传输 : 本地同步数据、类似于cp

远程传输 : 远程传输数据、类似于scp

守护进程 : 通过模块化的方式实现批量传输


rsync应用


yum安装    yum -y install rsync

监听端口    TCP/873 


rsync命令


格式:rsync(选项)(原始位置)(目标位置)

作为远程命令

选项:-a   归档模式,递归并保留对象属性,等同于-rlptgoD

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

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

举例:本地 :rsync -avz abc/ /opt (以当前路径表示为起点)

                       rsync -avz /abc /opt(展示完整路径)

           远程 :rsync -avz root@192.168.50.50:/etc/hostname /root

                       rsync -avz /root/hostname root@192.168.50.50:/etc/hostname

作为rsync服务

需要配合rsync主配置文件使用

主配置文件:/etc/rsyncd.conf

/etc/rsyncd.conf全局配置信息(可根据需要填写进主配置文件)

address       独立运行时,用于指定服务器运行的 IP 地址,默认本地所有IP
port          指定 rsync 守护进程监听的端口号,默认 873
pid file      rsync 的守护进程将其 PID 写入指定的文件
log file      指定 rsync 守护进程的日志文件,而不将日志发送给 syslog
syslog facility   指定 rsync 发送日志消息给 syslog 时的消息级别
socket options    指定自定义 TCP 选项
lockfile      指定rsync的锁文件存放路径
timeout       超时时间

/etc/rsyncd.conf模块配置信息(可根据需要填写进主配置文件)

path                指定当前模块的同步路径,该参数是必须指定的
comment             给模块指定一个描述
use chroot          在服务运行时要不要把他锁定在家目录,默认为 true
uid和gid            指定rsync运行用户和用户组,默认nobody
use chroot          是否让进程离开工作目录
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       指定密码文件
	

守护进程传输

配置守护进程传输流程

主配置文件 配置

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

服务器:

创建rsync用户: useradd rsync -s /sbin/nologin

创建rsync_backup认证用户密码: echo “rsync_backup:123456” > /etc/rsync.passwd

给本用户一个600的权限固定的 不能有改动:chmod 600 /etc/rsync.passwd

准备模块目录: mkdir /backup

更改归属都是rsync:    chown reync.rsync /backup

重启服务: systemctl restart rsyncd

客户端:

rsync -avz /etc/hosts rsync_backup@192.168.50.50::backup (客户端远程传输命令)

(表示把/etc/hosts放到192.168.50.50的“/”根下的backup下)rsync_backup 表示认证用户

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

客户端:

vim /etc/rsync.passwd 写入 密码:  123456

也可以使用echo “123456” > /etc/rsync.passwd 直接写入

chmod   600 /etc/rsync.passwd 设置权限

rsync -avz /etc/hosts rsync_backup@192.168.2.62::backup --password-file /etc/rsync.passwd

(更改完免密传输后 客户端远程传输命令)
  

rsync+inotfy实时同步


服务器:

修改主配置文件 /etc/rsyncd.conf

uid=root                                      运行用户
gid=root                                      运行组
max connections=4                       # 允许最大连接数
read only=false                              # 默认yes,模块目录只读权限
ignore errors                                  # 屏蔽错误报错
timeout=900                                   # 指定rsync传输超时时间
[wwwroot]                                                 声明的模块
path=/var/www/html                                 声明的目录

    comment = backup export area
    read only = false
    hosts allow = 192.168.50.0/24
允许登录的主机是50网段的主机

客户端:

先安装httppd

再安装inotify工具

把准备好的inotify-tools安装包拖到虚拟机

inotify-tools

解压:tar xf inotify-tools-3.14.tar.gz

执行、编译、安装 ./configure && make && make install

然后vim进入/stc/sysctl.conf     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 就监听到了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值