linux下使用rsync同步目录

本文描述了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 root@192.168.1.100:/tmp/rtest1 /tmp/

2、向备机推数据

主机上启动的流程

同步命令:

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

示例:

rsync -avzP --delete /tmp/rtest1 root@192.168.1.101:/tmp/

自动同步配置

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

1、使用ssh key

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

在主机上产生ssh key :

ssh-keygen -t rsa

在备机上加入pubkey

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.101

或者手动添加:

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

cat ~/.ssh/id_rsa.pub

在备机上加入key内容:

vi ~/.ssh/authorized_keys

使用pexpect自动输入密码

示例代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pexpect
import time
import traceback

def 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()
    pass

if __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进行同步 这个可以根据现有业务的特征进行,比如:

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

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

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2016-11-11

Linux下rsync远程数据同步命令的详细介绍

介绍 rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.rsync使用所谓的"rsync算法"来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快. rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明. 常用场景 无密码同步 服务端:vim /etc/rsyncd.conf #This is the rsync daemon configura

Linux 服务器同步 Rsync同步服务器文件

当一台服务器上的文件更新后,其它的服务器也需要更新,而且在更新的时 候应该是只对新增或是修改过的文件进行更新,否则会造成网络带宽和时间的浪费.rsync就是能有 效的保持文件及目录的一致的优秀软件. rsync,remote synchronize 顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的 权限.时间.软硬链接等附加信息,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另 外它还是免费的软件.rysnc的官方网站:http://rsync.sa

linux rsync的安装与配置

1.安装:yum -y install rsync 2.vim /etc/xinetd.d/rsync 复制代码 代码如下: service rsync{disable = nosocket_type = streamwait = nouser = rootserver = /usr/bin/rsyncserver_args = –daemonlog_on_failure += USERID} 3.vim /etc/rsyncd.conf(这个文件是手动创建,默认没有) uid = nobody

linux rsync同步命令(值得收藏)

如果你是一位运维工程师,你很可能会面对几十台.几百台甚至上千台服务器,除了批量操作外,环境同步.数据同步也是必不可少的技能. 说到"同步",不得不提的利器就是rsync,今天就来说说我从这个工具中看到的同步的艺术. [不带任何选项] 我们经常这样使用rsync: 复制代码 代码如下: $ rsync main.c machineB:/home/userB 1 只要目的端的文件内容和源端不一样,就会触发数据同步,rsync会确保两边的文件内容一样. 2 但rsync不会同步文件的&quo

linux rsync安装 配置 实例详解

Redhat中安装rsync 1.  首先在服务端和客户端都安装rsync,我的RHEL5默认已经安装好了.在安装RedHat5的时候,可以在软件定制中的"基本系统"-->"基本"的"可选的软件包"中看见:rsync-2.6.8是默认选择安装的 2.    也可以通过命令行检查是否安装: 或者:rpm –q rsync 3.  如果在开始安装RedHat的时候,使用默认选择的rysnc软件,但现在想用更高版本的rsync,可以卸载掉rysn

rsync中文手册之使用rsync实现网站镜像和备份linux第1/3页

简介 对于选择Linux 作为应用平台的的中小型企业或网站来说,往往面临如何实现数据远程备份或者网站镜象的问题,虽然有商业化的备份和镜象产品可供选择,但这些产品的价格往往过于昂贵.因此如何利用自由软件高效实现远程备份和网站镜象就成为一个值得讨论的话题. 通过网络进行远程数据备份或者网站镜象的最简单的方法就是使用wget,但是这种方式每次都需要将所有数据都重新在网络上传输一遍,而不考虑哪些文件是经过更新的,因此效率非常低下.尤其在需要备份的数据量很大的时候,往往需要花费数个小时来在网络上进行数据传

TinyMce 中文手册 在线手册与下载

因为发现网上只有cube316翻译的1.x版TinyMCE的用户手册,而现在TinyMCE 2.0 的用户手册相比以前有了比较大的变化,所以就根据TinyMCE2.0.3RC1中的手册进行了翻译,希望方便有需要的朋友. 由于本人水平有限,加之英文手册本身内容也有问题,如有错误欢迎指正交流.另外谢谢cube316的翻译,让我有了参考. 打包下载:TinyMce中文手册

prototype1.4中文手册

以前看到过一系列类似的函数: function $(s){return document.getElementById(s);} 觉得非常简单实用,原来都是prototype库里的. 现在有了中文手册,看起来就方便多了(虽然我还没细看该手册,但感觉应该不错).prototype.js是由Sam Stephenson写的一个javascript类库.这个构思奇妙,而且兼容标准的类库,能帮助你轻松建立有高度互动的web2.0特性的富客户端页面.文件: prototype手册.rar 大小: 789K

关于网站文件自动备份程序的一点思考

摘要:  本文提供了一种使用asp php脚本来实现网站文件备份的思路,可以实现指定文件的按天备份.  个人网站往往在虚拟主机上,对主机的控制权限很小,因此不能使用诸如任务计划来实现定时备份,我们需要换一种思路来实现相似的自动备份.  我们可以利用用户对网站的访问来实现对指定文件的按天备份.  基本思路是:用户访问网站 → 读取最后备份日期.读取当前日期然后比较,如果这两个日期不一致则调用备份程序来实现对指定文件的备份,备份完成后再写入新的日期标记,这时候用户再访问网站,日期已经是最新的了,就会

网站数据自动备份方法

近来由于国家打击,所以各地难免会出现封机房.断网的情况,针对这种情况,站长们最需要的就是能及时备份自己的数据,本文是根据作者自己多年的维护经验,来和大家分享下网站数据自动备份的一些经验. 目前站长们大多使用的网站程序无外乎ASP\asp.net\php\jsp 数据库的话,大多是access\sqlserver\mysql 我们分2种情况来说明下. 对于win服务器下的自动数据备份,网站文件,自然是比较好备份的,那么如果数据库也可以自动备份,那就基本实现完美自动备份. 如果你有独立服务器,那么这

网站控制台directadmin中文手册 Linux下虚拟主机管理

如何登入网站控制台? . 特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系 ... Direct Admin 的控制台 . 例如申请了xxx.com, 控制台的路径便是 www.directadmin.cn 版权申明:本站文章均来自网络,本站所有转载文章言论不代表本站观点 特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系. ... 你可以用我们Email给你的登录帐号及密码去登

使用RSYNC在服务器间镜像或者备份目录和文件

主页:rsync.samba.org 环境: Redhat Linux 6.2 , rsync 2.4.3(下载源码编译最好), 两台linux服务器192.168.11.7(test)(rsync server) , 192.168.11.2(proxy)(rsync client) 步骤: 1. 下载最新的rsync 2.4.3源文件编译,看rsync.samba.org ,据我所知, 只有2.4.3才支持 镜像时的排除选项 --include and --exclude, 编译后得到一个执

asp中利用CSW中文分词组件来实现自己网站的内容关键词自动提取

比如标题是:腾讯QQ 2006 珊瑚虫集成版 v4.5b 分词后:[此资源关键词:腾讯 QQ 珊瑚虫 集成 ] 并且把关键词做成专题,可以为每个内容页面生成相关连接了 用CSW中文分词组件 下载:http://www.vgoogle.net/Product_CSW.asp 下面是我的ASP代码,比较粗浅,但实用 codecsw 得到输出的所有分词结果,用它的组建里面有个ASP文件,你一看就知道怎么得到分词结果了,这个不详细说了. 复制代码 代码如下: fcon=split(htm," "

ISAPI_rewrite中文手册附多站点配置方法第1/4页

配置: 在NT 2000 XP和2003平台上,在系统帐户下应该INETINFO程序应该与IIS5以共存模式过滤器运行.所以系统帐户应该给予对所有的ISAPI-REWIRITE DLLS 和所有的HTTPD.INI文件至少可读权限,我们也推荐对给予系统帐户对于所有包括HTTPD.INI文件的文件夹的可写权限,这将允许产生HTTP.PARSE.ERRORS文件,这些文件包含配置文件语法错误.对于PROXY模块也需要额外的权限,因为它将运行于连接池或HIGH-ISPLATED应用模式,IIS帐户共享

ASP.NET环境下为网站增加IP过滤功能第1/2页

1. 需求分析 通过深入的交流和沟通,确认了该发电厂在企业网站用户访问控制方面的改进要求,大致情况如下: a) 网站基于Asp.Net2.0实现,不允许修改源程序 b) 厂内用户可直接访问整个站点的所有页面,员工不需要身份验证 c) 厂外用户只能访问指定的页面 显而易见,他们就是针对企业网站增加一项IP过滤功能,在厂外用户访问某些敏感页面时将其拒之门外.首先我们需要设置一个IP列表和一个Url列表,前者包含所有厂内IP,后者包含厂外用户可访问的全部Url,并且这两个列表都是可维护的:另外一个核心