rsync在windows下的安装和配置

rsync在windows下的安装和配置,第1张

首先要下载windows版的rsync
rsync分为服务器端和客户端,以A(服务器端),B(客户端)2台服务器为例
A的IP地址为1921681111
B的ip地址为1921681123
1,先配置服务器端,在服务器上安装cwRsyncServer_405_Installerexe,安装的时候路径不要去改,全部用默认路径,如果你用的是64位 *** 作系统请把默认路径中的Program
Files
(x86)那个(x86)删掉,安装过程中rsync会自动建立一个叫做rsync的用户名,并且提示你输入这个用户的密码,这里很关键,这个密码一定要是你系统用户即adminstrator的密码,如果怕出错就不用管他直接点下一步,值得完成安装,这时打开你的服务检查下有没有一个RsyncServer的服务,如果没有的话就是那个用户密码的地方弄错了,建议卸载重新安装,如果有那就OK,最后检查下你的防火墙是否打开873端口
以上就是服务器端的安装了,然后就是配置,找到你rsync的安装目录点击进去里面会有个rsyncdconf的配置文件,用记事本的方式打开他,在文件最前面追加"uid
=
0"
"gid
=
0"
2行,然后修改
"[]"
的内容,这里小编直接上图,有图更容易看懂
怎么样,从图上来看很清楚把,然后在在服务里面找到
"RsyncServer"
修改为"自动开启"
并且将服务"启动"
2,接下来是客户端,首先客户端先安装cwRsync_405_Installexe,同样安装的时候路径不要去改,全部用默认路径,如果你用的是64位 *** 作系统请把默认路径中的Program
Files
(x86)那个(x86)删掉,安装完成后,新建一个txt文本文档,这里小编还是上图来说明
--timeout参数,这个是一个超时设定,在服务器忙或者网络忙的时候rsync会出现同步到一半不动的情况,用了这个参数的话就可以设定他在你指定的时间内rsync没有进行 *** 作则取消命令,这个在多台服务器同步的时候非常有用
--exclude参数,排除你指定某个文件或者目录,这个不用多介绍了
--delete参数,这个的意思是服务器端与客户端保持完全一致,客户段与服务端不同的文件客户端会进行删除 *** 作,这里小编建议新手不要加上这个参数,如果服务端误 *** 作删掉了文件那你所有的机器都会删掉这个文件,就会很麻烦,所以先可以不加这个参数
其实rsync的运用还有很多很多种
,小编介绍的算是一种非常实用又简单的方式,当然有兴趣的同学还可以更加的深入研究它哦。

rsync 就是远程同步的意思remote sync
rsync 被用在UNIX / Linux执行备份 *** 作 *** 作
rsync 工具包被用来从一个位置到另一个位置高效地同步文件和文件夹 rsync可以实现在同一台机器的不同文件直接备份,也可以跨服务器备份

rsync 语法如下

从语法结构我们可以看出, 源和目标即可以在本地也可以在远端 如果是远端的话,需要指明登录用户名, 远端服务器名, 和远端文件或目录 同时源可以是多个, 目标位置只能是一个

说明:

-z: --compress 使用压缩机制

-v: --verbose 打印详细信息

-r: --recursive 以递归模式同步子目录

注意: 同步完成后, 我们会发现文件的时间戳timestamps发生了改变

有时我们希望拷贝或同步时, 时间戳不要发生变化, 源文件是什么时间戳,目标文件就是什么时间戳, 这时我们需要使用 -a --archive 归档模式选项 -a 选项相当于7个选项的组合 -rlptgoD

-r, --recursive: 递归模式Recursive mode
-l, --links: 将符号链接当作符号链接文件拷贝, 不拷贝符合链接指向的文件内容
-p, --perms: 保留文件权限
-t, --times: 保留修改时间戳
-g, --group: 保留用户组信息
-o, --owner: 保留用户信息(需要超级用户权限)
-D, 相当于 --devices --specials 的组合, 保留设备文件, 保留特殊文件

同步完成后, 我们再来看文件属性, 时间戳信息得到了保留, 不仅如此文件的所有者 和所在组也得到保留

说明: Pubkeys 是一个普通文件

使用rsync, 也可以从本地拷贝多个文件或目录到远端, 以下即为示例:

注意:
与本地文件拷贝不同的地方在于, 当拷贝文件到远程服务器时, 我们指定远程主机上的用户名, 服务器地址, 路径等信息, 类是于使用scp命令拷贝, 如果没有设置ssh免密码登录我们还需要提供远程用户的密码等信息有时你不想频繁输入密码, 或者rsync运行在一个无人执守的脚本里面, 这是需要预先设置ssh免密登录, 或者使用结合expect命令,自动输入密码, 但是出于安全考虑, 密码需要加密 所以在条件许可的情况下, 还是推荐设置ssh免密登录

与示例 4 稍有不同, 这时远端目录或文件作为源位置, 本地目录或文件作为目标位置, 示例如下:

rsync 允许指定远程主机上运行shell命令
这时需要使用 -e 选项:
-e, --rsh=COMMAND 指定远端使用的shell命令

Use rsync -e ssh to specify which remote shell to use In this case, rsync will use ssh

在一下特殊的使用场景中, 我们不希望拷贝文件时, 我们不希望拷贝过程覆盖掉目标位置中用户做出的修改 这时我们需要使用 -u 选项明确的告诉rsync命令保留用户在目标文件中作出的修改 在下面的例子中, 文件Basenames是用户基于上次的拷贝, 修改过的文件, 当我们使用了-u 选项后, 该文件中的修改将不会被覆盖掉

在某些特殊场景中, 我们只需要远程服务器上的目录结构, 而不希望花大量时间, 带宽拷贝文件内容, 这时我们可以使用 -d, --dirs选项来达到目的

有时我们希望拷贝文件时, 能实时的显示拷贝进度, 以及传输速率等信息 尤其是拷贝大文件时, 程序不输出信息, 用户往往无法区分程序是在响应中, 还是已经挂起, 在这种情况下如果使用 –progress 就会非常有帮助
rsync –progress option displays detailed progress of rsync execution as shown below

你也可以使用rsnapshot工具 (rsnapshot会调用rsync)来备份本地linux服务器, 或者备份远程linux服务器

有时我们希望目标文件和源文件保持严格一致, 不要多文件也不要少文件, 这是我们可能需要使用 -delete 选项来达到目的 如果使用 -delete 选项, rsync将删除目标位置多余的文件或文件夹 此选项还可以结合--delete-excluded 选项一起使用, 添加一些例外的文件

上述示例中, new-filetxt 是源文件中没有的文件, 其将会在拷贝时被删除掉

在某些特殊的场景下, 我们只想更新, 目标位置已经存在的文件或目录, 而不关心源位置的新文件, 这时我们可以使用-existing 选项仅仅更新已经存在的文件
让我们来验证一下这个选项的功能, 首先在源端添加一个新文件 new-filetxt

从上面的例子可以看到, 由于加了--existing选项新文件new-filetxt没有被拷贝到目标位置

选项-i, --itemize-changes 非常有用, 当我们想了解目标位置和源位置的文件差异时

在源端:

在目标端:

注意: 在上面的例子中, 源位置和目标位置有两处差异 第一, 源文件Basenames的所有者和组 与 目标文件不同, 第一Dirnames文件大小也不一样
现在让我们来看看rsync会怎样显示这些差异

输出信息只在相应文件前面显示了9个字母来标识改变, 这些字母具体是什么意思呢 请参考以下详细说明

rsync 可以使用--include 和 --exclude 选项结合通配符进行文件或文件夹过滤

在上面的示例中, 仅仅以P打头的文件和文件夹被包含了进来, 其他的文件都被过滤在拷贝的过程中被排除在外了

可以使用--max-size 告诉rsync 不要拷贝大小超过某个值的文件, 可以使用K, M, G指定文件大小, M for megabytes and G for gigabytes

rsync 有个重要优点就是, 可以做到在拷贝的过程中, 只拷贝发生变化了的部分, 而不是发送整个文件
但是在某些场景中, 比如文件较少, 文件size较小时, 我们的带宽又足够大, cpu资源相对又贫乏, 我们不希望它这样做, 因为毕竟计算源端和目标端的checksum, 并做对比, 也需要额外cpu开销 这时我们可以使用 -W, --whole-file 选项, 让rsync不用计算那么多, 一上来就直接开始传送文件 我们可以像下面这么做

15个Rsync命令实例


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

原文地址: https://outofmemory.cn/zz/10751832.html

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

发表评论

登录后才能评论

评论列表(0条)

保存