您正在使用 IPV4 [3.236.145.153] 访问本站,您本次已经查看了 1 页
用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器
[公益]保护绿色环境,构建和谐社会       悟空收录网      

【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中      
[公益] 地球是我家,绿化靠大家      
2024年 妇女节 010
2024年 清明节 037
2025年 元 旦 309
2025年 春 节 337
 
您现在的位置:首页 >> Linux >> 内容
本类新增
本类热门
linux下使用rsync同步目录
内容摘要: 数据同步方式1、从主机拉数据备机上启动的流程同步命令:rsync-avzP--deleteroot@{remoteHost}:{remoteDir}{localDir}参数说明:-a参数,相当于-rlptgoD(-r是递归-l是链接文件,意思是拷贝链接文件;-p表示保持文件原有权限;-t保持文件原有时间;-g保持文件原有用户组;-o保持文件原有属主;-D相当......
数据同步方式

1、从主机拉数据

备机上启动的流程

同步命令:

rsync-avzP--deleteroot@{remoteHost}:{remoteDir}{localDir}

参数说明:

-a参数,相当于-rlptgoD(-r是递归-l是链接文件,意思是拷贝链接文件;-p表示保持文件原有权限;-t保持文件原有时间;-g保持文件原有用户组;-o保持文件原有属主;-D相当于块设备文件);

-z传输时压缩;

-P传输进度;

-v传输时的进度等信息;

示例:

[email protected]:/tmp/rtest1/tmp/

2、向备机推数据

主机上启动的流程

同步命令:

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

示例:

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

自动同步配置

描述同步时不输入密码的配置的方法。

1、使用sshkey

该方法可以直接使用rsync命令进行同步,同步过程中无需输入密码。

在主机上产生sshkey:

ssh-keygen-trsa

在备机上加入pubkey

ssh-copy-id-i~/.ssh/[email protected]或者手动添加:

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

cat~/.ssh/id_rsa.pub

在备机上加入key内容:

vi~/.ssh/authorized_keys

使用pexpect自动输入密码

示例代码如下:

#!/usr/bin/envpython

#-*-coding:utf-8-*-

importpexpect

importtime

importtraceback

defdoRsync(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)

printcmd

i=ssh.expect(['password:','continueconnecting(yes/no)?'],timeout=5)

ifi==0:

ssh.sendline(passwd)

elifi==1:

ssh.sendline('yes')

ssh.expect('password:')

ssh.sendline(passwd)

ssh.read()

ssh.close()

except:

#printtraceback.format_exc()

pass

if__name__=='__main__':

doRsync("root","123456","192.168.1.101","/tmp/rtest1","/tmp")

上面是使用python实现的代码,大家可根据情况用其它语言实现该功能。

其它

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

Itissafetokillanrsyncprocessandrunthewholethingagain;itwillcontinuewhereitleftoff.Itmaybealittleinefficient,particularlyifyouhaven'tpassed--partial(includedin-P),becausersyncwillcheckallfilesagainandprocessthefileitwasinterruptedonfromscratch.

rsync被kill掉是安全的,下次启动时还可以正常工作。

2、rsync不能指定时间段;

1)该问题可以通过kill来解决

2)或者使用pexpect的timeout参数来控制

3)可以先通过find查找过滤出文件夹的名字,然后使用rsync进行同步这个可以根据现有业务的特征进行,比如:

find/tmp-name'*'-newermt'2016-03-08'!-newermt'2016-03-20'

3、rsync在写文件过程中同步(比如录音过程中执行rsync操作)

经测试,rsync会同步部分文件内容,文件写入完成后再执行rsync会保持文件的一致

4、当文件数量达到百万级以上时,rsync同步时扫描改变的文件非常耗时

版权声明:本内容来源于网络,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。
上一篇:Linux获取当前脚本真实路径的方法

 

下一篇:linux添加删除路由的技巧

发布日期:2024/2/2
手机扫二维码直达本页
发布时间:10:52:46
点  击:29
录  入:星儿
相关文章
Baidu
YiJiaCMS 7.3.8 build231228(MSSQL) 闽ICP备05000814号-1
本空间由腾讯云(轻量应用服务器)提供,Cloudflare提供加速防护
运行时间载入中.....