rsync同步

  • rsync同步简介
    • 一款快速增量备份工具
    • 应用场景
    • rsync 包括如下的一些特性
  • 配置rsync源服务器
    • rsync同步源简介
    • 如何配置rsync源
    • rsync命令的用法
  • 配置rsync远程同步
    • rsyns源站配置
    • 客户端验证
  • rsync实时同步
    • 为什么要实时同步
    • 关于inotify
    • rsync+inotify实时同步

rsync同步简介

一款快速增量备份工具

Remote Sync,远程同步
支持本地复制,或者与其他SSH、rsync主机同步

应用场景

“推”
即由客户端推送数据至服务器,比如个人电脑上传数据至云盘。
“拉”
即由客户端拉取服务器上的数据,比如利用个人电脑下载云盘文件。

rsync 包括如下的一些特性

  • 能更新整个目录树和文件系统;
  • 有选择性的保持符号链链、硬链接、文件属性、权限、设备以及时间等;
  • 传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。
  • 能用rsh、ssh 或直接端口做为传输端口;
  • 支持匿名rsync 同步文件,是理想的镜像工具;

Rsync可以通过rsh或ssh使用,也能以daemon模式去运行,在以daemon方式运行时Rsync server会打开一个873端口,等待客户端去连接。
在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客机的rsync同步操作的服务器称为备份源。

配置rsync源服务器

rsync同步源简介

备份操作的远程服务器,也称为备份源

如何配置rsync源

基本思路
修改rsyncd.conf配置文件、独立的密码文件
启用rsync的–daemon模式

应用示例
用户backuper,允许下行同步
操作的目录为/var/www/html

配置文件rsyncd.conf
语法类似于Samba配置
认证配置auth users、secrets file,不加则为匿名(nobody)

rsync账号文件
采用“用户名:密码”的记录格式,每行一个用户记录
独立的账号数据,不依赖于系统账号(安全)

如何启动和关闭rsync
启动rsync:rsync --daemon
关闭rsync:kill $(cat /var/run/rsyncd.pid)

rsync命令的用法

rsync [选项] 原始位置 目标位置
**常用选项**-a:归档模式,递归并保留对象属性,等同于-rlptgoD-v:显示同步过程的详细信息-z:在传输文件时进行压缩-H:保留硬连接文件-A:保留ACL属性信息--delete:删除目标位置有而原始位置没有的文件--checksum:根据对象的校验和来决定是否跳过文件

配置rsync远程同步


地址

20.0.0.11

同步目录

/var/www/html

客户端地址

20.0.0.12

rsyns源站配置

确认rsync是否安装

[root@server1 ~]# rpm -qa rsync
rsync-3.0.9-18.el7.x86_64

修改配置文件

[root@server1 ~]# vi /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = yes           #禁锢家目录
address = 20.0.0.11     #提供同步服务的地址
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 20.0.0.0/24   #允许同步的网段    [wwwroot]
path = /var/www/html   #同步的目录
comment = www.lcx.com #描述信息
read only = yes      #只读模式开启
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2   #这些结尾的文件同步时不再压缩
auth users = backuper #指定来访用户
secrets file = /etc/rsyncd_users.db   #用户密码存放在secrets file中创建backuper用户的密码文件[root@server1 ~]# vi /etc/rsyncd_users.db
backuper:123456###服务端的密码文件要600权限[root@server1 ~]# chmod 600 /etc/rsyncd_users.db

启动服务查看状态

[root@server1 ~]# rsync --daemon #启动rsync守护进程
[root@server1 ~]# netstat -anpt | grep rsync
tcp        0      0 20.0.0.11:873           0.0.0.0:*               LISTEN      8717/rsync  [root@server1 ~]# yum -y install httpd #安装apache
[root@server1 ~]# cd /var/www/html/ #此时会创建这个目录[root@server1 html]# vi index.html
<h1>this is web!</h1>[root@server1 html]# cd ..
[root@server1 www]# chmod 777 html/ #给/var/www/html所有权限

客户端验证

**常用选项:**
-r:递归模式,包含目录及子目录中的所有文件
-l:对于符号链接文件仍然复制为符号链接文件
-v:显示同步过程的详细信息
-a:归档模式,保留文件的权限、属性等信息,等同于组合选项“-rlptgoD”
-z:在传输文件时进行压缩
-p:保留文件的权限标记
-t:保留文件的时间标记
-g:保留文件的属组标记(仅超级用户使用)
-o:保留文件的属主标记(仅超级用户使用)
-H:保留硬连接文件
-A:保留ACL属性信息
-D:保留设备文件及其他特殊文件

方法一

[root@server1 ~]# yum -y install httpd
[root@server1 html]# cd /var/www
[root@server1 www]# chmod 777 html/[root@server1 www]# rsync -avz backuper@20.0.0.11::wwwroot /var/www/html
Password:  #输入密码,不显示
receiving incremental file list
./
index.htmlsent 83 bytes  received 179 bytes  47.64 bytes/sec
total size is 22  speedup is 0.08

方法二

[root@server1 www]# rsync -avz rsync://backuper@20.0.0.11/wwwroot /var/www/html

免密方式同步文件:
要先在客户端本地创建密码文件/etc/server.pass

[root@server1 ~]# vi /etc/server.pass
123456
[root@server1 ~]# rsync -avz --delete --password-file=/etc/server.pass backuper@20.0.0.11::wwwroot /var/www/html

rsync实时同步

为什么要实时同步

  • 定期同步的不足
    执行备份的时间固定,延迟明显,实时性差
    当同步源长期不变化时,密集的定期任务是不必要的
  • 实时同步的优点
    一旦同步源出现变化,立即启动备份
    只要同步源无变化,则不执行备份

关于inotify

Linux内核的inotify机制
从版本2.6.13开始提供
可以监控文件系统的变动情况,并做出通知响应
辅助软件:inotify-tools

rsync+inotify实时同步

客户端调整inotify内核参数

[root@server1 ~]# vim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384  ###监控事件队列大小
fs.inotify.max_user_instances = 1024  ###最多监控实例数
fs.inotify.max_user_watches = 1048576  ###每个实例最多监控文件数[root@server1 ~]# sysctl -p #刷新生效
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576

源站修改配置文件

[root@server1 ~]# vi /etc/rsyncd.conf
read only = no

客户端安装inotify-tools辅助工具

[root@server1 ~]# yum -y install gcc gcc-c++ make #安装编译环境[root@server1 inotify-tools-3.14]# tar zxvf inotify-tools-3.14.tar.gz [root@server1 ~]# cd inotify-tools-3.14/
[root@server1 inotify-tools-3.14]# ./configure
[root@server1 inotify-tools-3.14]# make && make install
[root@server1 inotify-tools-3.14]# inotifywait -mrq -e modify,create,move,delete /var/www/html #开启监控
###
-m持续监控、r递归、-q简要型输出,-e操作(更新),modify(修改),create(更新),move(移动),delete(删除),/var/www/html(监控地址)
此时监控台不可操作,可以通过远程登录多开页面进行操作
###

客户端第二页面

[root@server1 html]# cd /var/www/html/
[root@server1 html]# touch abc
[root@server1 html]# rm -rf abc

客户端

[root@server1 inotify-tools-3.14]# inotifywait -mrq -e modify,create,move,delete /var/www/html/
/var/www/html/ CREATE abc #显示刚才操作
/var/www/html/ DELETE abc #显示刚才操作

客户端上编写脚本,将inotify监控和rsync远程同步结合起来

[root@server1 ~]# vi inotify.sh
#!/bin/bash
INOTIFY="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html"
RSYNC="rsync -avz --delete --password-file=/etc/server.pass /var/www/html backuper@20.0.0.11::wwwroot/" #本地路径在前为源与本地同步
$INOTIFY | while read DIRECTORY EVENT FILE   #逐条读取监控记录
doif [ $(pgrep rsync | wc -l) -le 0 ];then$RSYNCfi
done

同步两边目录权限都为777
同步源

[root@server1 ~]# ls -lh /var/www
总用量 352K
drwxr-xr-x. 2 root root    6 10月  2 00:52 cgi-bin
drwxrwxrwx. 3 root root   47 12月 30 23:27 html

#发起端

[root@server1 ~]# ls -lh /var/www/
总用量 0
drwxr-xr-x. 2 root root  6 8月   4 2017 cgi-bin
drwxrwxrwx. 2 root root 57 12月 30 23:35 html

运行脚本,在客户端/var/www/html目录下创建文件,查看源端/var/www/html目录是否同步到
客户端:

[root@server1 ~]# cd /var/www/html/
[root@server1 html]# echo '<h1>this is web!</h1>' > index.html

客户端监控:

[root@server1 ~]# ./inotify.sh
sending incremental file list
html/
html/index.htmlsent 120 bytes  received 31 bytes  302.00 bytes/sec
total size is 22  speedup is 0.15
sending incremental file listsent 58 bytes  received 9 bytes  134.00 bytes/sec
total size is 22  speedup is 0.33

源站

[root@server1 ~]# cd /var/www/html/
[root@server1 html]# ls
abc  html  index.html
[root@server1 html]# cd html/
[root@server1 html]# ls
index.html
[root@server1 html]# cat index.html
<h1>this is web!</h1>

教你用rsync同步相关推荐

  1. rsync同步服务实验讲解

    rsync 同步服务 复制: 源所有数据 同步: 只传输变化数据 • 命令用法 – rsync [选项...] 源目录 目标目录 • 本地同步 – rsync [选项...] 本地目录1 本地目录2 ...

  2. rsync同步和备份文件到本地

    转载请注明文章出处:https://tlanyan.me/use-rsync-... rsync是主机间同步和备份的神器.相对于ftp.scp等工具,rsync功能更强大,同步/传输效率更高,实属服务 ...

  3. 在Windows中配置Rsync同步

    在Windows中配置Rsync同步 Rsync是一款不错的文件免费同步软件,可以镜像保存整个目录树和文件系统,同时保持原来文件的权限.时间.软硬链接.第一次同步时 rsync 会复制全部内容,下次只 ...

  4. Linux同步自己的配置,Linux学习心得之——Rsync同步配置

    Linux学习心得之--Rsync同步配置 1 使用软件 类unix系统下的数据镜像备份工具:rsync. 2 安装说明 2.1 获取rsync 下载最新版本的rsync-3.0.8.tar.gz 2 ...

  5. rsync 同步文件重复拷贝问题

    rsync 是同步文件的利器,一般用于多个机器之间的文件同步与备份,同时也支持在本地的不同目录之间互相同步文件.在这种场景下,rsync 远比 cp 命令更加合适,它只会同步需要更新的文件,默认情况下 ...

  6. sersync+rsync同步

    一.Sersync安装 (1)Sersync同步需求逻辑图 Sersync依赖于rsync进行数据同步,需在主服务器master上开启Sersync,Sersync负责监控配置文件 中的文件系统的事件 ...

  7. rsync 同步优化_可以优化同步吗?

    rsync 同步优化 总览 有一个常见的误解,因为JIT很智能,并且可以消除对象的同步,而该对象仅存在于不影响性能的方法中. 比较StringBuffer和StringBuilder的测试 这两个类基 ...

  8. rsync同步工具学习笔记

    rsync同步工具 1.rsync介绍 rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具.rsync软件适用于unix/linux/windows等多种操作 ...

  9. linux rsync 目录同步,linux下使用rsync同步目录

    本文描述了linux下使用rsync单向同步两个机器目录的问题. 使用rsync同步后可以保持目录的一致性(含删除操作). 数据同步方式 1.从主机拉数据 备机上启动的流程 同步命令: rsync - ...

最新文章

  1. twofive(记忆搜索)
  2. CART树 python小样例
  3. 为什么数据库不应该使用外键
  4. 使用resnet训练CIFAR10
  5. 电脑python安装库_Python安装第三方库的3种方法 -电脑资料
  6. 046_Unicode对照表十二
  7. 科普 | 12个关键词,告诉你到底什么是机器学习
  8. 【牛客 - 303K第十五届浙江大学宁波理工学院程序设计大赛(同步赛)】Technology Tree(树形dp,tricks)
  9. aws lambda_Express.js和AWS Lambda —无服务器的爱情故事
  10. 织梦自定义表单地区联动类型不可用的解决办法
  11. X86汇编语言从实模式到保护模式15:任务和任务的创建
  12. 写笔记插件_如何构建自己的笔记知识体系?
  13. Flink API之Source入门
  14. 操作系统原理基础知识
  15. 地理信息系统(汤国安)重点整理与推导(第三章)
  16. canvas绘图有锯齿毛边问题的解决
  17. html怎么设置img样式,css默认样式 css中img默认样式问题
  18. 完全弹性碰撞公式推导
  19. 文献调研神器——Connected Papers
  20. ESXI ssh 登录

热门文章

  1. Unity帧率、屏幕刷新率
  2. NodeJS环境搭建以及运行Node.js项目、饿了么ui(elementui)开发模式简单介绍
  3. 利用matlab建立含间隙关节的曲柄滑块动力学分析
  4. 数学建模——图与网络模型及方法(二)
  5. 【汽车ECU开发】------INCA使用教程
  6. 自己正在使用的工具,备注一下
  7. java数据结构停车场管理系统_《数据结构》实验设计报告-停车场管理系统
  8. python批处理远程关机脚本_使用shutdown命令实现远程关机和重启
  9. 文章4片 观察者模式
  10. ASP编程入门进阶(九):Application