详解rsync,一款卓越的增量同步工具(一)

详解rsync,一款卓越的增量同步工具(一),第1张

Rsync (remote rsync) 是可以实现 增量备份远程(和本地)文件复制工具,目的是实现本地主机和远程主机上的文件同步(包括本地推到远程,远程拉到本地两种同步方式),也可以实现本地不同路径下(不同目录、分区之间)文件的同步,但不能实现远程路径1到远程路径2之间的同步(scp可以实现)。配合计划任务,rsync能实现 定时或周期同步 ;配合inotify或sersync,可以实现触发式的 实时同步

本篇文章主要介绍rsync的使用方法和它常用的功能。

rsync官方网站: https://rsync.samba.org/

不考虑rsync的实现细节,就文件同步而言,涉及了源文件和目标文件的概念,还涉及了以哪边文件为同步基准。例如,想让目标主机上的文件和本地文件保持同步,则是以本地文件为同步基准,将本地文件作为源文件推送到目标主机上。反之,如果想让本地主机上的文件和目标主机上的文件保持同步,则目标主机上的文件为同步基准,实现方式是将目标主机上的文件作为源文件拉取到本地。当然,要保持本地的两个文件相互同步,rsync也一样能实现,这就像Linux中cp命令一样,以本地某文件作为源,另一文件作为目标文件,但请注意,虽然rsync和cp能达到相同的目的,但它们的实现方式是不一样的。

既然是文件同步,在同步过程中必然会涉及到源和目标两文件之间版本控制的问题,例如是否要删除源主机上没有但目标上多出来的文件,目标文件比源文件更新(newer than source)时是否仍要保持同步,遇到软链接时是拷贝软链接本身还是拷贝软链接所指向的文件,目标文件已存在时是否要先对其做个备份等等。

rsync同步过程中由两部分模式组成:决定哪些文件需要同步的检查模式以及文件同步时的同步模式。

(1).检查模式是指按照指定规则来检查哪些文件需要被同步,例如哪些文件是明确被排除不传输的。默认情况下,rsync使用"quick check"算法快速检查源文件和目标文件的大小、mtime(修改时间)是否一致,如果不一致则需要传输。当然,也可以通过在rsync命令行中指定某些选项来改变quick check的检查模式,比如"--size-only"选项表示"quick check"将仅检查文件大小不同的文件作为待传输文件。rsync支持非常多的选项,其中检查模式的自定义性是非常有d性的。

(2).同步模式是指在文件确定要被同步后,在同步过程发生之前要做哪些额外工作。例如上文所说的是否要先删除源主机上没有但目标主机上有的文件,是否要先备份已存在的目标文件,是否要追踪链接文件等额外 *** 作。rsync也提供非常多的选项使得同步模式变得更具d性。

相对来说,为rsync手动指定同步模式的选项更常见一些,只有在有特殊需求时才指定检查模式,因为大多数检查模式选项都可能会影响rsync的性能。

以下是rsync的语法:

由此语法可知,rsync有三种工作方式:

(1).本地文件系统上实现同步。命令行语法格式为上述"Local"段的格式。

(2).本地主机使用远程shell和远程主机通信。命令行语法格式为上述"Access via remote shell"段的格式。

(3).本地主机通过网络套接字连接远程主机上的rsync daemon。命令行语法格式为上述"Access via rsync daemon"段的格式。

前两者的本质是通过管道通信,即使是远程shell。而方式(3)则是让远程主机上运行rsync服务,使其监听在一个端口上,等待客户端的连接。

但是,还有第四种工作方式:

(4).通过远程shell也能临时启动一个rsync daemon,这不同于方式(3),它不要求远程主机上事先启动rsync服务,而是临时派生出rsync daemon,它是单用途的一次性daemon,仅用于临时读取daemon的配置文件,当此次rsync同步完成,远程shell启动的rsync daemon进程也会自动消逝。此通信方式的命令行语法格式同"Access via rsync daemon",但要求options部分必须明确指定"--rsh"选项或其短选项"-e"。

如需源码安装,请关注即将发布的《详解Rsync,一款卓越的增量同步工具(二)》

系统环境:

服务器配置:阿里云ECS 11G

*** 作系统:CentOS7.2

rsync 版本:3.1.2

rsync 服务器:rsync-server (10.168.152.72)

rsync 客户端:rsync-client (10.117.217.172)

检查rsync 是否已经安装

若已安装,无需重新安装;若未安装,用以下命令安装:

写入以下配置到该文件:

输入,格式是“用户名:口令”,用户不要求是系统用户

root:pwd123456

输入:

======welcome to synchronize appdata======

如果rsync启动成功,可以看到873端口已经在监听了。

检查rsync 是否已经安装

若已安装,无需重新安装;若未安装,用以下命令安装:

更多同步数据的场景演示,请关注即将发布的《详解Rsync,一款卓越的增量同步工具(二)》

配置文件 rsyncd.conf 由全局配置和若干模块配置组成。配置文件的语法为:

全局参数

在文件中 [module] 之外的所有配置行都是全局参数。当然也可以在全局参数部分定义模块参数,这时该参数的值就是所有模块的默认值。

模块参数

模块参数主要用于定义 rsync 服务器哪个目录要被同步。模块声明的格式必须为 [module] 形式,这个名字就是在 rsync 客户端看到的名字,类似于 Samba 服务器提供的共享名。而服务器真正同步的数据是通过 path 来指定的。可以根据自己的需要,来指定多个模块,模块中可以定义以下参数:

a. 基本模块参数

b. 模块控制参数

c. 模块文件筛选参数

d. 模块用户认证参数

e. 模块访问控制参数

客户主机列表定义可以是以下形式:

f. 模块日志参数

设置了”log file”参数时,在日志每行的开始会添加”%t [%p]“。

可以使用的日志格式定义符如下所示:

因为各种原因,会经常想用手机访问电脑目录,又因为各种原因,会经常想用电脑访问手机目录。 在不是用数据线的情况下。

然后发现 ES文件管理器 实现这样一种想法。其实是找到了官方的 参考文档 中的 网络管理功能 。不得不说, ES文件管理器 是Android平台的一个良心之作。

具体的 *** 作一开始想自己 *** 作,结果发现贴心的参考文档都有了,那我就搬运工下,然后部分地方说下自己的看法好了。 然后再介绍另一个软件和方式。

只要保持手机和电脑在同一网络环境下,不需要数据线,也不需要通过其他客户端即可在电脑上远程对sdcard中的文件进行管理。

① 有两种方式,点击主页—工具中的“电脑管理手机”或者在快捷导航—网络中选择,点击打开后,您就会看到一个“ftp://”的地址,这就是您设备的IP地址。

② 这时在PC端的地址栏输入该地址,回车后就可以看到设备中的文件了。

③ 可以点击远程管理器中的设置,自主设置端口、根目录、管理账号、编码等内容。

① 为了方便手机端的 *** 作,可以在设置中选择创建桌面快捷方式,如下图所示。这样就可以在退出ES的情况下,直接启动ES远程管理器。

② 为了方便电脑端的 *** 作,可以双击打开计算机,在空白处点击右键,添加一个网络位置,如下图一步步填入ES远程管理器中显示的ftp地址就可以。这样就可以直接在计算机页面双击打开了。

不过要注意的是网络环境如果变化了,ftp地址也会相应变化,需要重新添加。

使用ES中的局域网功能,可以用安卓设备查看、复制电脑中共享的文件。根据权限设置的不同,编辑、删除文件,以及向电脑中指定的文件夹粘贴文件。前提是安卓设备和电脑要在同一网络环境下。

① 为了共享文件的安全性,建议设置登录电脑的账号和密码。方法如下图所示。

② 右键单击想要共享的文件/文件夹/磁盘,设置共享、权限等(以磁盘为例)。

① 打开ES文件浏览器,打开快捷导航—局域网,点击扫描,就能看到自己电脑的IP了。

点击后输入用户名和密码,就可以查看或 *** 作共享的文件了。

② 如果局域网中的服务器太多,也可以直接点击新建添加所需的服务器,方法如下图。

③ 服务器中常用的文件/文件夹可以长按—更多,将其加入服务器列表或添加到桌面,方便 *** 作。

其实,ES文件管理器确实功能强大,具体的参看它的使用手册就好,我这只是搬运工和抛砖引玉,为了更加便捷地学习和工作还有玩耍。

然后还有两个问题要提示:

BT sync 是一个文件同步工具,可以在几台不同的设备之间同步文件。其实说到用它进行文件目录互访有点大材小用或者说局限了。它可以在非局域网,在使用了相同同步密钥的客户端简进行文件的同步。当然如果处于局域网速度会更快,因为同步就不走互联网了。

BTSync 原来是免费的但现在开始收费了,不过免费版的应该已经足够使用。

还有一点是, BTSync 是同步,不是共享访问 。也就是说所有在同步目录下的文件都会相当于复制一份在每个设备上,占用相应的物理空间。所以和ES文件管理器有所不同,各有优缺。

原文链接: http://www.lxxself.com/post/yu-dao-liao-jiu-fen-xiang/2015-08-08

我有3台ubuntu服务器,work_svr1、work_svr2为在公网运行的工作用服务器,1上运行着工作用的webapp,2作为备份服务器备。另外还有一台个人租用的异地服务器做博客服务器用。我希望工作用1号服务器上数据和个人博客服务器数据可以每天定时备份到2号服务器上。

rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我使用了其中3个选项,详细的选项使用说明可以使用man命令查看。

ssh免密码自动登录,这样在自动定时远程备份时,就可以不需输入ssh登录密码。

首先在客户端服务器 A 为用户 a 生成公钥(passphrase不需要输入):

接下来以用户 b 的身份ssh登录 B 创建 ~/.ssh 目录(有可能这个目录已经存在了):

最后把客户端 A 的公钥附加到 B 端 authorized_keys 文件中:

现在不需输入密码就可以登录 B 了:

最后设置一下 crontab -e 定时任务,ok。

此文部分参考了这篇 rsync 和这篇 ssh 的内容。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8091060.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存