rsync是Unix/Linux下同步文件的一个高效算法,它能同步更新两处计算机的文件与目录,并适当利用查找文件中的不同块以减少数据传输。关于rsync的核心算法,有兴趣的看下这篇文章。

这里介绍一下使用方法,我们假设要从A机器的/a目录同步文件到B机器的/b目录,为了简单起见,以下操作均使用root权限。

安装rsync

首先是rsync的安装,Linux下一般都会自带,如果没有就用包管理工具安装,或者到rsync官网下载手动安装;Windows下则可以安装cygwin,安装时选择包含rsync包即可。也可以选择cwRsync,cwRsync其实也是rsync基于cygwin环境在Windows上的实现,不过自4.1.0版本之后开始收费了,另外据我测试,cwRsync的性能没有比直接装cygwin来得好,非严谨测试,仅供参考。

创建secrets文件

我们把A机器当作服务端,B机器当作客户端。

因此在A机器上创建文件/etc/server.secrets,该文件相当于是rsync的用户名密码数据库。假如只有一个用户,用户名是rsyncuser,密码是rsyncpwd,文件内容如下:

rsyncuser:rsyncpwd

修改文件的访问权限为600,rsync强制要求必须是600,否则使用时会报错。

# chmod 600 /etc/server.secrets

然后在B机器上创建文件/etc/client.secrets,客户端的secrets文件只需要填写密码即可,文件内容如下:

rsyncpwd

修改文件的访问权限为600,rsync强制要求必须是600,否则使用时会报错。

# chmod 600 /etc/server.secrets

创建rsyncd.conf文件

A机器上创建文件/etc/rsyncd.conf,该文件是rsync的配置文件,大致的格式如下:

全局参数

[模块名称1]
模块参数1
模块参数2

[模块名称2]
模块参数1
模块参数2

有些参数必须是全局参数,有些参数既可以是全局参数也可以是模块参数,根据写的位置不同而不同。

全局参数:

port:指定后台程序使用的端口号,默认为873。

log file:指定rsync的日志文件,而不将日志发送给syslog。比如可指定为/var/log/rsyncd.log

pid file:指定rsync的pid文件,通常指定为/var/run/rsyncd.pid

模块参数:

path:指定该模块的供备份的目录树路径,该参数是必须指定的。

comment:给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义。

uid:该选项指定当该模块传输文件时守护进程应该具有的uid,配合gid选项使用可以确定哪些可以访问怎么样的文件权限,默认值是nobody

gid:该选项指定当该模块传输文件时守护进程应该具有的gid。默认值为nobody

use chroot:如果use chroot指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺 点是需要以roots权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true。

max connections:指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。默认值是0,也就是没有限制。

list:该选项设定当客户请求可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为false,可以创建隐藏的模块。默认值是true。

hosts allow:该选项指定哪些IP的客户允许连接该模块。客户模式定义可以是以下形式: 单个IP地址,例如:192.167.0.1

read only:该选项设定是否允许客户上载文件。如果为true那么任何上载请求都会失败,如果为false并且服务器目录读写权限允许那么上载是允许的。默认值为true。

hosts deny:指定不允许连接rsync服务器的机器,可以使用hosts allow的定义方式来进行定义。默认是没有hosts deny定义。

transfer logging:使rsync服务器使用ftp格式的文件来记录下载和上载操作在自己单独的日志中。

auth users:该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果auth users被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的 challenge/response认证协议。用户的名和密码以明文方式存放在secrets file选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)。

secrets file:该选项指定一个包含定义用户名:密码对的文件。只有在”auth users”被定义时,该文件才有作用。文件每行包含一个username:passwd对。一般来说密码最好不要超过8个字符。没有默认的 secures file名,需要限式指定一个(例如:/etc/rsyncd.passwd)。注意:该文件的权限一定要是600,否则客户端将不能连接服务器。

strict modes:该选项指定是否监测密码文件的权限,如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问,其他任何用户不可以访问该文 件。默认值为true。

这里我们编写rsyncd.conf内容如下:

uid = root
gid = root
use chroot = false
hosts allow = *
log file = /var/log/rsyncd.log
read only = false
transfer logging = yes
secrets file = /etc/server.secrets
auth users = rsyncuser
[a]
path = /a/

启动rsync守护进程

A机器上执行:

# /usr/bin/rsync --daemon

开始同步

B机器执行:

# rsync -ahvP --password-file=/etc/client.secrets 'rsyncuser@192.168.1.100::a' '/b/'

如果需要压缩,则添加-z选项:

# rsync -ahvPz --password-file=/etc/client.secrets 'rsyncuser@192.168.1.100::a' '/b/'

如果需要限速,则添加--bwlimit选项,单位是KB:

# rsync -ahvPz --password-file=/etc/client.secrets --bwlimit 200 'rsyncuser@192.168.1.100::a' '/b/'

如果只需要列出差异的文件,不想真正的传输文件,则添加--dry-run选项:

# rsync -ahvPz --password-file=/etc/client.secrets --dry-run 'rsyncuser@192.168.1.100::a' '/b/'

如果需要在执行结尾列出同步结果,则添加--stats选项:

# rsync -ahvPz --password-file=/etc/client.secrets --stats 'rsyncuser@192.168.1.100::a' '/b/'

总结

以上便是rsync一次文件同步的简单示例。

使用rsync同步文件的更多相关文章

  1. rsync 同步文件

    rsync 同步文件 rsync -avz roo@192.168.4.12::/home/a ./a  --exclude "data" exclude 去掉/a/data 文件 ...

  2. rsync 同步文件重复拷贝问题

    rsync 是同步文件的利器,一般用于多个机器之间的文件同步与备份,同时也支持在本地的不同目录之间互相同步文件.在这种场景下,rsync 远比 cp 命令更加合适,它只会同步需要更新的文件,默认情况下 ...

  3. Windows服务器之间rsync同步文件

    两台windows7机器 server:192.168.12.104 client:192.168.12.103 目的:将server上的E盘的目录FYFR里面的内容定时同步到client上的D盘下F ...

  4. Git版本控制,rsync同步文件,完成线上部署

    之前项目开发完成,测试阶段,借着此时,由于公司暂时用两台aliyun  ecs  做业务层,所以每次都需要同步线上文件,进而想着搞一搞服务器端(小公司,新项目,先小搞一把),搭建一套小的版本控制上线的 ...

  5. 通过 lsyncd + rsync 同步文件

    通过rsyncd实现将源服务器上的文件同步到目标服务器,通过lsyncd监控源服务器上的文件是否有变动,若有变动调用rsyncd服务对差异的文件进行同步. 0. lsyncd有三种同步文件的方式: ( ...

  6. rsync同步文件

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

  7. rsync同步文件到远程机器,卡住10多秒--问题解决过程

    背景 以前大体介绍过,我们这边是做运维平台的.如果要形象化理解,那么,比如jenkins这种喜闻乐见的软件大致了解吧,jenkins就经常需要同步文件/版本包到远程机器上,jenkins怎么实现的,没 ...

  8. 【Linux】rsync同步文件 & 程序自启动

    rsync使用 1. 为什么使用rsync? rsync解决linux系统下文件同步时, 增量同步问题. 使用场景: 线上需要定时备份数据文件(视频资源), 使用rsync完成每天的增量备份. 参见: ...

  9. linux命令:rsync, 同步文件和文件夹的命令

    Usage: rsync [OPTION]... SRC [SRC]... DEST  or   rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST  or ...

随机推荐

  1. Android模拟位置信息

    Android模拟位置程序,俗称GPS欺骗,只能修改采用GPS定位的软件. 手机定位方式目前有4种:基站定位,WIFI定位,GPS定位,AGPS定位 常见的修改手法: 1. 抓包欺骗法,抓包改包欺骗服 ...

  2. postgresql 中replace 函数

    select replace(字段名,E'\r','') from 表名 where 字段名 like E'%\r%';:  查看修改后结果,并不真实修改数据库 update 表名 set 字段名=r ...

  3. MiniProfiler(MiniProfiler.EF6监控调试MVC5和EF6的性能)

    git:  https://github.com/MiniProfiler 以前开发Webform的时候可以开启trace来跟踪页面事件,这对于诊断程序的性能是有很大的帮助的,起到事半功倍的作用,今天 ...

  4. ACM-ICPC退役选手的发言——满满的正能量(短视频)

    这是我在北京林业大学ACM-ICPC竞赛说明会上发言的录像 希望能激励大家在奋斗的道路上披荆斩棘,勇往直前!

  5. 解决ssh远程登陆linux显示-bash-4.1$

    cp -pr /etc/skel/.bash* /home/test/ #/home/test是用户目录改变用户家目录:usermod -md /tmptest test

  6. hive2.1.0安装

    下载hive(http://mirrors.cnnic.cn/apache/hive/) 或者 http://archive.apache.org/dist/hive/(hive历史版本) 在本地进行 ...

  7. VR技术的高速发展阶段

    转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 在虚拟现实技术的高速发展阶段,与虚拟现实密切相关的计算机图形学.数字图像处理.传感技术等学科迅速发展,从 ...

  8. vmware workstation9.0 RHEL5.8 oracle 10g RAC安装指南及问题总结

    一,虚拟机规划 (1)虚拟机:添加三块网卡 eth0 eth1 eth2 ,分别用于内网,心跳,外网RAC1 内网:192.168.1.10/24  心跳:192.168.2.10/24  VIP:1 ...

  9. Power BI的一些视频演示资源

    Power BI作为Self Service BI的方案,得到了人们的广泛关注.Power BI里的大多数组件目前还都是预览版的阶段,但是我们已经可以从powerbi.com网站下体验到其相当给力的一 ...

  10. 基于命令行编译打包phonegap for android应用 分类: Android Phonegap 2015-05-10 10:33 73人阅读 评论(0) 收藏

    也许你习惯了使用Eclipse编译和打包Android应用.不过,对于使用html5+js开发的phonegap应用,本文建议你抛弃Eclipse,改为使用命令行模式,绝对的快速和方便. 一直以来,E ...