博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rsync
阅读量:5226 次
发布时间:2019-06-14

本文共 1786 字,大约阅读时间需要 5 分钟。

rysnc

rsync 是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件。

rsync 使用所谓的“Rsync 演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。

运行 rsync server 的机器也叫 backup server,一个 rsync server 可同时备份多个 client 的数据;也可以多个rsync server 备份一个 client 的数据。

rsync 可以搭配 rsh 或 ssh 甚至使用 daemon 模式。rsync server 会打开一个873的服务通道(port),等待对方 Rsync 连接。连接时,rsync server 会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。

 

rsync 的基本特点如下:

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

可以很容易做到保持原来文件的权限、时间、软硬链接等;
无须特殊权限即可安装;
优化的流程,文件传输效率高;
可以使用 rcp、ssh 等方式来传输文件,当然也可以通过直接的 socket 连接(daemon方式)

支持匿名传输。

核心算法

假定在名为 α 和 β 的两台计算机之间同步相似的文件 A 与 B,其中 α 对文件A拥有访问权,β 对文件 B 拥有访问权。并且假定主机 α 与 β 之间的网络带宽很小。那么 Rsync 算法将通过下面的五个步骤来完成:

  1. β 将文件 B 分割成一组不重叠的固定大小为 S 字节的数据块。最后一块可能会比 S 小。
  2. β 对每一个分割好的数据块执行两种校验:一种是32位的滚动弱校验,另一种是128位的 MD4 强校验。
  3. β 将这些校验结果发给 α。
  4. α 通过搜索文件 A 的所有大小为 S 的数据块(偏移量可以任选,不一定非要是 S 的倍数),来寻找与文件B 的某一块有着相同的弱校验码和强校验码的数据块。这项工作可以借助滚动校验的特性很快完成。
  5. α 发给 β 一串指令来生成文件 A 在 β 上的备份。这里的每一条指令要么是对文件 B 经拥有某一个数据块而不须重传的证明,要么是一个数据块,这个数据块肯定是没有与文件 B 的任何一个数据块匹配上的。

线上配置/etc/rsyncd.conf 

uid     = rootgid     = rootuse chroot      = yesmax connections = 10pid file=/var/run/rsyncd.pidlist = yesstrict modes = nohosts allow =10.0.0.0/8 172.16.39.0/24模块参数[data1]path = /data1[data2]path = /data2[data3]path = /data3[data4]path = /data4[data5]path = /data5[data6]path = /data6[data7]path = /data7[dbatemp]path = /data1/dbatemp 只有该模块对应的目录可以写,其他都只读read only=no[tmp]path = /tmp
rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST这里的DEST对应rsyncd.conf配置中的module

启动

rsync默认端口为873,启动方法如下:

/usr/bin/rsync --daemon

或者使用启有xinetd超级进程启动

/etc/init.d/xinetd reload

查看rsync是否启动

[root@etch171 mars171 ~]# lsof -i:873COMMAND  PID USER   FD   TYPE   DEVICE SIZE NODE NAMExinetd  6995 root    5u  IPv4 39343230       TCP *:rsync (LISTEN)

参考资料

转载于:https://www.cnblogs.com/gsblog/p/3797765.html

你可能感兴趣的文章
49:把字符串转换为整数
查看>>
HDU-6031 Innumerable Ancestors(二分+树上倍增)
查看>>
流媒体协议(二):RTMP协议
查看>>
linux下的find文件查找命令与grep文件内容查找命令
查看>>
swift 数组
查看>>
SQL存储过程学习笔记
查看>>
爱情16谈
查看>>
php执行与curl区别
查看>>
ARCH字体管理,添加新字体.
查看>>
数据库MySQL/mariadb知识点——安装篇(4)多实例配置
查看>>
HTML标签----图文详解(二)
查看>>
RS485使用注意事项(上下拉电阻)
查看>>
NodeJs Mysql Cant't create more than max_prepared_stmt_count statements
查看>>
Python开发基础 day3 列表 元组 字典
查看>>
Java 静态代码块&构造代码块&局部代码块
查看>>
asp.net定时执行程序
查看>>
linux tail命令的使用!!!
查看>>
Fragstats景观分析研究
查看>>
常见简单算法
查看>>
转载->CPU的内部架构和工作原理
查看>>