导读 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录。rsync共有3种使用方法,在配置rsync也是有6个步骤的。下面我们就从rsync的介绍,rsync的使用和rsync的配置带你走进rsync的世界
一.rsync简介

Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录。 在使用 rsync 进行远程同步时,可以使用两种方式:远程 Shell 方式(建议使用 ssh,用户验证由 ssh 负责)和 C/S 方式(即客户连接远程 rsync 服务器,用户验证由 rsync 服务器负责)。rsync 被称为是一个文件同步的快速方法,主要是因为其在同步文件时会检查文件之间是否有差异,它只同步存在差异或者不存在的文件,但是首次同步时速度依然很慢。

rsync有许多选项:
-n: 在不确定命令是否能按意愿执行时,务必要事先测试;-n可以完成此功能;
-v: --verbose,详细输出模式
-q: --quiet,静默模式
-c: --checksum,开启校验功能,强制对文件传输进行校验
-r: --recursive,递归复制;
-a: --archives,归档,保留文件的原有属性
-p: --perms 保留文件的权限
-t: --times 保留文件的时间戳
-l: --links 保留文件的符号链接
-g: --group 保留文件的属组
-o: --owner 保留文件的属主
-D: --devices 保留设备文件
-H, --hard-links 保留硬链结;
-S, --sparse 对稀疏文件进行特殊处理以节省DST的 空间;
-e ssh: 表示使用ssh协议作承载
-z: 对文件压缩后传输
--progress:显示进度条
--stats: 显示如何执行压缩和传输
--delete:删除那些DST中有而SRC没有的文件,即删除DST中多余的文件;

二,rsync使用方法

rsync可以在此处下载 http://rsync.samba.org/ ,CentOS系统上rsync默认是安装的。

rsync有六种不同的工作模式:

1. 拷贝本地文件

当SRC和DES路径信息都不包含有单个冒号”:”分隔符时就启动这种工作模式。

[root@localhost ~]# rsync -avSH /home/feiyu/ /bak/
2.将本地机器的内容拷贝到远程机器

使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号”:”分隔符时启动该模式。

[root@localhost ~]# rsync -av /home/feiyu/ 192.168.0.24:/home/feiyu/
3.将远程机器的内容拷贝到本地机器

使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:”分隔符时启动该模式。

[root@localhost ~]# rsync -av 192.168.0.24:/home/feiyu/  /home/feiyu/

注意:rsync命令使用中,如果源参数的末尾有斜线,就会复制指定目录的内容,而不复制目录本身;没有斜线,则会复制目录本身;目标参数末尾的斜线没有作用;因此下面的命令

[root@localhost ~]# rsync -r /mydata/data /backups/ : 会把目录data直接同步至/backups目录中

[root@localhost ~]# rsync -r /mydata/data/ /backups/: 会把目录data/中的内容的同步至/backups目录中

后面三种模式都是在rsync作为服务器时才能使用的,下面就开始配置rsync作为一个服务。

三,配置rsync服务

配置一个简单的rsync服务并不复杂,但是我们安装好rsync后,并没有发现配置文件,所以你需要手动建立一些配置文件。rsync可以经由xinetd启动daemon,或者作为一个独立进程启动daemon。如果把它作为一个独立进程来启动,只需要运行命令:rsync –daemon即可;但是我们一般将其作为超级守护进程使用。下面是安装步骤:

1.安装并启动xinetd
[root@localhost ~]# yum -y install xinetd 

[root@localhost ~]# ls  /etc/xinetd.d/    #rsync的xinetd配置文件已经存在
chargen-dgram daytime-dgram discard-dgram echo-dgram rsync time-dgram
chargen-stream daytime-stream discard-stream echo-stream tcpmux-server time-stream
2. 为rsync服务提供配置文件

配置文件为/etc/rsyncd.conf,获取帮助的方式:man rsyncd.conf。配置文件需要定义一个全局配置和多个rsync共享配置。

[root@localhost ~]# cat  /etc/rsyncd.conf
# Global Settings
# port = 873 端口号默认为873,可以不指定
uid = nobody //指定当模块传输文件的守护进程UID
gid = nobody //指定当模块传输文件的守护进程GID
use chroot = no //使用chroot到文件系统中的目录中
max connections = 5 //最大并发连接数
strict modes = yes #严格检查文件权限
pid file = /var/run/rsyncd.pid //指定PID文件
lock file = /usr/local/rsyncd/rsyncd.lock //指定支持max connection的锁文件,默认为/var/run/rsyncd.lock
log file = /var/log/rsyncd.log //rsync 服务器的日志 # Directory to be synced
[mydata] //自定义模块
path = /mydata/data //用来指定要备份的目录
ignore errors = yes //可以忽略一些IO错误
read only = no //设置no,客户端可以上传文件,yes是只读
write only = no //no为客户端可以下载,yes 不能下载
hosts allow = 192.168.0.0/16 //可以连接的IP
hosts deny = * //禁止连接的IP
list = false //客户请求时,使用模块列表
uid = root
gid = root
auth users = myuser //连接用户名,和linux系统用户名无关系
secrets file = /etc/rsyncd.passwd //验证密码文件

说明(deny | allow 规则):
1、二者都不出现时,默认为允许访问;
2、只出现hosts allow: 定义白名单;但没有被匹配到的主机由默认规则处理,即为允许;
3、只出现hosts deny: 定义黑名单;出现在名单中的都被拒绝;
4、二者同时出现:先检查hosts allow,如果匹配就allow,否则,检查hosts deny,如果匹配则拒绝;如二者均无匹配,则由默认规则处理,即为允许;

3.创建密码文件

文件格式(明文): username : password

[root@localhost ~]# echo "myuser:mypass" >  /etc/rsyncd.passwd 

[root@localhost ~]# chmod 600 /etc/rsyncd.passwd     #权限必须为600
4.启动服务
[root@localhost ~]# service xinetd  start
5.使用方法 ( 后三种模式 )

a. 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::”分隔符时启动该模式。

[root@localhost ~]# rsync -av myuser@192.168.0.23::mydata /tmp/     #myuser为rsync服务器的一个用户

b. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::”分隔符时启动该模式。

[root@localhost ~]# rsync -av install.log.syslog  myuser@192.168.0.23::mydata

c. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。

[root@localhost ~]# rsync -av myuser@192.168.0.23::mydata

带你走进rsync的世界的更多相关文章

  1. 小丁带你走进git的世界三-撤销修改

    一.撤销指令 git checkout还原工作区的功能 git reset  还原暂存区的功能 git clean  还没有被添加进暂存区的文件也就是git还没有跟踪的文件可以使用这个命令清除他们 g ...

  2. 小丁带你走进git的世界二-工作区暂存区分支

    小丁带你走进git的世界二-工作区暂存区分支 一.Git基本工作流程 1.初始化一个仓库 git  init git  clone git仓库分为两种情况: 第一种是在现有项目或目录下导入所有文件到 ...

  3. 小丁带你走进git的世界三-撤销修改(转)

    一.撤销指令 git checkout还原工作区的功能 git reset  还原暂存区的功能 git clean  还没有被添加进暂存区的文件也就是git还没有跟踪的文件可以使用这个命令清除他们 g ...

  4. 人人都可以写的一个Python可视化小程序,带你走进编程的世界

    当年的PHP号称是最好的编程语言,今天的Python就是最简单的编程语言,一个小小的程序,寥寥几行代码,带你体验一下编程的乐趣. 最简单的编程语言 今天要介绍的小工具是Python环境安装好之后,自带 ...

  5. 小丁带你走进git的世界四-重写历史记录

    一.git对象文件创建 开篇先补充一个知识点,就是比如我建立一个文件之后,使用git add就会生成一个git对象,但是git对象生成后可以在.git/objects里面对应,首先我们来初始化一个仓库 ...

  6. 一秒钟带你走进P图世界-----(python)PIL库的使用

    python-----PIL库的使用 一.什么是PIL库 1.PIL(Python Image Library)库是python语言的第三方库,具有强大的图像处理能力,不仅包含了丰富的像素.色彩操作功 ...

  7. 瞄一眼,带你走进SparkSQL的世界

    本文由  网易云发布. 作者:范欣欣(本篇文章仅限知乎内部分享,如需转载,请取得作者同意授权.) 最近想来,大数据相关技术与传统型数据库技术很多都是相互融合.互相借鉴的.传统型数据库强势在于其久经考验 ...

  8. 具体解释C++引用——带你走进引用的世界

     一.介绍引用 首先说引用是什么,大家能够记住,引用就是一个别名,比方小王有个绰号叫小狗.他的妈妈喊小狗回家吃饭.那就是在喊小王回家吃饭. 接下来我们用两行代码来声明一个引用(就拿小王和小狗来说吧 ...

  9. Java第一天,带你走进编程的世界,我的第一个程序

    要想彻底了解Java是什么,我就得首先了解编程语言的发展史.编程语言最初的形势是"0101......"数据编程,也就是机器语言.机器语言可以说是一种几乎没有人能够看懂的编程语言, ...

随机推荐

  1. JavaWeb---总结(九)通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片  1 package gacl. ...

  2. 图解HTTPS协议加密解密全过程

    我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取.所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议. HTTPS简介 HTTPS其实是有两部分组成:HTTP + SSL ...

  3. Oracle开发常用函数

    max 最大数 自动加 1 create or replace function fun_getmaxlot( vend in varchar2 , domain IN VARCHAR2, tag i ...

  4. C#读写文本和连接数据库

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  5. CentOS 6.x安装Metasploit

    现在开始安装Metasploit框架,前面的包安装成功之后,我们需要再安装一些Metasploit依赖的Ruby库,命令如下: gem install wirble pg sqlite3 msgpac ...

  6. Java多线程——线程范围内共享变量

    多个线程访问共享对象和数据的方式 1.如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如,买票系统就可以这么做. package java_ ...

  7. 内嵌DB

    SQLLite H2 MySQL Embeded 等 比较项目 SQLite H2 database engine MySQL Embedded Footprint 350KiB ~1MB <2 ...

  8. 关于软件工程个人作业 Word frequency program 的总结

    一.预计花在程序各部分的时间: (1)对所给命令行参数的判断和处理,看它是否合法.是哪种模式.预计用时20min; (2)关于目录操作:遍历给定目录下的所有文件,包括子目录和非目录文件.预计用时40m ...

  9. codeforces 724B Batch Sort(暴力-列交换一次每行交换一次)

    题目链接:http://codeforces.com/problemset/problem/724/B 题目大意: 给出N*M矩阵,对于该矩阵有两种操作: (保证,每行输入的数是 1-m 之间的数且不 ...

  10. C# vs C++ Performance

    http://www.codeproject.com/Articles/212856/Head-to-head-benchmark-Csharp-vs-NET