• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

linux下使用rsync同步目录

linux 搞代码 3年前 (2022-03-03) 26次浏览 已收录 0个评论

本文形容了linux下应用rsync单向同步两个机器目录的问题。 应用rsync同步后能够放弃目录的一致性(含删除操作)。

数据同步形式

1、从主机拉数据

备机上启动的流程

同步命令:

rsync -avzP –delete root@{remoteHost}:{remoteDir} {localDir}

参数阐明:

-a 参数,相当于-rlptgoD(-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 示意放弃文件原有权限;-t 放弃文件原有工夫;-g 放弃文件原有用户组;-o 放弃文件原有属主;-D 相当于块设施文件); -z 传输时压缩; -P 传输进度; -v 传输时的进度等信息;

示例:

rsync -avzP –delete [email protected]:/tmp/rtest1 /tmp/

2、向备机推数据

主机上启动的流程

同步命令:

rsync -avzP –delete {localDir} root@{remoteHost}:{remoteDir}

示例:

rsync -avzP –delete /tmp/rtest1 [email protected]:/tmp/

主动同步配置

形容同步时不输出明码的配置的办法。

1、应用ssh key

该办法能够间接应用rsync命令进行同步,同步过程中无需输出明码。

在主机上产生ssh key :

ssh-keygen -t rsa

在备机上退出pubkey

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

或者手动增加:

在主机上执行以下命令获取pubkey:

cat ~/.ssh/id_rsa.pub

在备机上退出key内容:

vi ~/.ssh/authorized_keys

应用pexpect主动输出明码

示例代码如下:

*#!/usr/bin/env python# –– coding: utf-8 -*-import pexpectimport timeimport tracebackdef doRsync(user,passwd,ip,srcDir,dstDir,timeout=3600): cmd = “rsync -azPq –delete {srcDir} {rUser}@{rHost}:{dstDir}”.format( rUser = user,rHost=ip,srcDir=srcDir,dstDir=dstDir ) try: ssh = pexpect.spawn(cmd,timeout=timeout) print cmd i = ssh.expect([‘password:’, ‘continue connecting (yes/no)?’], timeout=5) if i == 0 : ssh.sendline(passwd) elif i == 1: ssh.sendline(‘yes’) ssh.expect(‘password: ‘) ssh.sendline(passwd) ssh.read() ssh.close() except : #print traceback.format_exc() passif name == ‘main’: doRsync(“root”,”123456″,”192.168.1.101″,”/tmp/rtest1″,”/tmp”)

下面是应用python实现的代码,大家可依据状况用其它语言实现该性能。

其它

1、rsync在执行过程中被kill掉会怎么样;

It is safe to kill an rsync process and run the whole thing again; it will continue where it left off. It may be a little inefficient, particularly if you haven’t passed –partial (included in -P), because rsync will check all files again and process the file it was interrupted on from scratch.**

rsync被kill掉是平安的,下次启动时还能够失常工作。

2、rsync不能指定时间段;

1)该站长博客问题能够通过kill来解决

2)或者应用pexpect的timeout参数来管制

3)能够先通过find查找过滤出文件夹的名字,而后应用rsync进行同步 这个能够依据现有业务的特色进行,比方:


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:linux下使用rsync同步目录

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址