rsync表示 remote sync,其用于在本地或与远程主机间进行文件或目录备份。相比较scp等工具,rsync有以下优点:

  1. 速度:除首次全拷贝外,其他时候实现增量拷贝,加快传输速度
  2. 安全:传输数据时可用ssh加密传输
  3. 带宽占用:rsync可对数据进行分块压缩传输,相比其他文件传输工具占用更少带宽
  4. 权限限制:非root用户也可安转和执行rsync命令

rsync执行方式如下:

$ rsync options source destination

source 和 destination 既可以指示本地,也可以是远程机器。下面通过实例说明rsync的用法。

1.在本地两个目录间进行数据同步

以下命令用于在两个目录间完成文件拷贝:

$ rsync -zvr /var/opt/lx/ /root/temp/
sending incremental file list
a.c
b.c

sent  bytes  received  bytes  522.00 bytes/sec
total size is   speedup is 0.31

以上选项表示意思如下:

  • -z 传输前进行压缩
  • -v 显示命令执行详细信息
  • -r 递归拷贝目录

此时我们看本地和目的地两个文件属性,注意到两者的时间戳是不同的:

$ ll /var/opt/lx/a.c /root/temp/a.c
-rw-r--r--  root root  - : /root/temp/a.c
-rw-r--r--  root root  - : /var/opt/lx/a.c

若要保留原文件时间戳、属主/属组、权限属性,我们可以使用 -a 选项:

$ rsync -azv /var/opt/lx/ /root/temp/

-a选项亦包含递归的作用,因而可以替代-r选项。

2.本地与远程主机间完成数据同步

我们可以用rsync将本地的文件,同步到远程机器:

$ rsync -avz /root/temp/ lx@192.168.1.103:/home/lx/tmp/
Password:
sending incremental file list
created directory /home/lx/tmp
./
a.c
b.c

sent  bytes  received  bytes  21.52 bytes/sec
total size is   speedup is 0.30

以上我们指明了目的机器ip、登录用户以及所路径,并且需要输入相应用户的登录密码。以上命令完成本地到远程机器的同步,调换source和destination的位置,我们亦可完成远程机器到本地的数据同步。

3.使用ssh通道进行数据同步

在与远端进行数据同步时,我们一般采用ssh通道,使用 -e ssh 选项可以完成该功能:

$ rsync -avz -e ssh /root/temp/ lx@192.168.1.103:/home/lx/tmp/

4.不覆盖目的地对文件已作的修改

经常出现这样的场景,我们对源文件和目的地文件均作了修改,同时想将源文件作的修改同步到目的地,但又保留对目的地文件的更改,此时可以使用 -u 选项:

$ ls -l /root/temp/b.c
-rw-r--r--  root root  - : /root/temp/b.c
$ ls -l /var/opt/lx/b.c
-rw-r--r--  root root  - : /var/opt/lx/b.c
$ rsync -avzu /var/opt/lx/ /root/temp/
sending incremental file list
./
a.c

sent  bytes  received  bytes  412.00 bytes/sec
total size is   speedup is 0.49

以上目的地 b.c 文件经过修改,与源文件不相同,此时使用 -u 选项,可以看到对 b.c 并不进行同步,目的地 b.c 的修改得以保存。

5.删除不存在于源目录的目的地文件

对于不存在于源目录,但存在于目的地的文件,有时我们想在做文件同步时删除它们,--delete 选项可以满足要求:

$ rsync -avz --delete /var/opt/lx/ /root/temp/
sending incremental file list
./
deleting c.c
b.c

sent  bytes  received  bytes  270.00 bytes/sec
total size is   speedup is 0.75

以上目的地相比源目录多了c.c文件,同步时 --delete 将该文件删除。

6.在同步时不在目的地创建新文件

有时我们只想对目的地已经有的文件进行同步,而不理会源目录新增的文件,此时可以使用 --existing 选项:

$ rsync -avz --existing /var/opt/lx/ /root/temp/

7.显示执行进度

使用 --progress 选项可以显示同步的进度,包括文件传输完成进度、传输速率信息:

$ rsync -avz --progress /var/opt/lx/ /root/temp/
sending incremental file list
./
a.c
           %    .00kB/s    :: (xfer#, to-check=/)
b.c
            %    .81kB/s    :: (xfer#, to-check=/)

sent  bytes  received  bytes  546.00 bytes/sec
total size is   speedup is 0.37

8.查看 source 和 destination 间的区别

rsync完成源目录到目的地的拷贝,若能查看到源目录与目的地间的差异,这对同步十分有帮助,-i 选项可以显示源目录与目的地间的差异,示例如下。

source:

$ ls -l /var/opt/lx/
总计
-rw-r--r--  root root  - : a.c
-rw-r--r--  root root    - : b.c

destination:

$ ls -l /root/temp/
总计
-rw-r--r--  root root  - : a.c
-rw-r--r--  lx   root   - : b.c

可以看到 source 与 destination 有两处不同,一处为 a.c 的文件大小,第二处为 b.c 的属主,此时添加 -i 选项进行数据同步,有以下输出:

$ rsync -avzi /var/opt/lx/ /root/temp/
sending incremental file list
.d..t...... ./
>f.st...... a.c
.f....o.... b.c

sent  bytes  received  bytes  424.00 bytes/sec
total size is   speedup is 0.72

对于同步的每个文件,均对应有一条输出,有11个标志位指示源文件与目的地文件的区别,在以上例子中,各标志位意义如下:

  • > 指示传输到本地
  • f  指示所传为文件
  • s  指示文件大小不一致
  • t  指示时间戳不一致
  • o  指示属主不一致

9.按指定模式进行同步

使用 --include 和 --exclude 选项,可以帮助我们完成只同步特定文件的目的,例如以下只同步以 'a' 开头的文件:

$ rsync -avz --include 'a*' --exclude '*' /var/opt/lx/ /root/temp/
sending incremental file list
./
a.c
aa.c

sent  bytes  received  bytes  546.00 bytes/sec
total size is   speedup is 0.54

10.限制传输文件的大小

使用 --max-size 选项,我们可以限制传输文件的最大大小:

$ rsync -avz --max-size='100K' /var/opt/lx/ /root/temp/

以上命令限制传输的文件大小只能小于或等于100K,另可以使用 M 和 G 作为大小单位。

11.全拷贝

默认情况下 rsync 采用增量拷贝,这样能节省带宽,在所同步文件不大的情况下,我们可以通过 -W 选项实现全拷贝:

$ rsync -avzW /var/opt/lx/ /root/temp/

11个rsync使用实例的更多相关文章

  1. 11. SpringBoot 之CRUD实例

    SpringBoot静态页路径,可直接通过URL访问的: /META-INF/resources /resources /static /public 而    5. /template 只和模板引擎 ...

  2. KindEditor 4.1.11最新版 网站实例 包含使用方法 下载地址

    KindEditor是非常好的富媒体文本编辑系统,短小精悍,可惜网上找到的都是有各种问题!一怒之下,我自己进行了修改和配置,搞成了一个网站示例.下载解压后,可以直接运行!!完全无问题.! Kinded ...

  3. redis3.2.11多机多实例集群部署及测试连接情况

    机器配置 redis3.2.11安装配置规划 机器 192.168.169.136(本机虚拟机1) 192.168.169.137(本机虚拟机2) 系统 Red Hat Enterprise Linu ...

  4. rsync应用实例

      一. 通过ssh的方式 前面介绍的rsync 5种方式当中,第二.第三(1个冒号)就属于通过ssh的方式,这种方式其实就是让用户去登录到远程机器,然后执行rsync的任务. [root@local ...

  5. 【Python】【demo实验11】【练习实例】【三个整数的立方和】

    目的:找到 除了9n±4型自然数外,所有100以内的自然数都能写成三个整数的立方和    这每个数的表达方式: 源代码: #!/usr/bin/python # encoding=utf-8 # -* ...

  6. 【11】Redis .net 实例 StackExchange.Redis框架

    1.创建测试项目并下载nuget包:StackExchange.Redis PM> Install-Package StackExchange.Redis 2.创建 RedisHelper类 p ...

  7. 11.树形Model/View实例

    任务1:显示如图的树形结构 思考: 1.使用QTreeView显示. 2.Model使用QStandardItemModel,qt的一个标准model. 3.QStandardItemModel下每一 ...

  8. 使用rsync命令提高文件传输效率

    众多数据库服务器的管理过程中,在不同服务器间的文件传输是免不了的.您可以使用scp命令或FTP方法完成文件的发送和接收,这篇文章我将给大家介绍另外一种方法,这就是rsync命令.rsync是文件传输程 ...

  9. Rsync安装和配置

    一.Rsync简介 1.1什么是Rsync Rsync是一款快速的,开源的,多功能的,可以实现全量和增量的远程和本地的数据同步和数据备份的工具. 全量的概念是:全部备份. 增量的概念是:差异化备份.对 ...

随机推荐

  1. C#中的委托和事件(下篇)

    上次以鸿门宴的例子写了一篇博文,旨在帮助C#初学者迈过委托和事件这道坎,能够用最快的速度掌握如何使用它们.如果觉得意犹未尽,或者仍然不知如何在实际应用中使用它们,那么,这篇窗体篇,将在Winform场 ...

  2. Vue快速学习_第二节

    表单输入绑定(v-model) v-model 指令在表单 <input>.<textarea> 及 <select> 元素上创建双向数据绑定(注意只在表单这几个可 ...

  3. Django中使用JS通过DataTable实现表格前端分页,每页显示页数,搜索等功能

    Django架构中自带了后端分页的技术,通过Paginator进行分页,前端点击按钮提交后台进行页面切换. 优缺点:后端分页对于数据量大的场景有其优势,但页面切换比较慢. 后端分页python3代码如 ...

  4. scala刷LeetCode--26 删除排序数组中的重复项

    一.题目描述 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完 ...

  5. Python 爬虫从入门到进阶之路(十八)

    在之前的文章我们通过 scrapy 框架 及 scrapy.Spider 类做了一个<糗事百科>的糗百爬虫,本章我们再来看一下相较于 scrapy.Spider 类更为强大的 CrawlS ...

  6. Tomcat配置解析

    Tomcat文件配置 tomcat解压后目录 bin:可执行文件(startup.bat shutdown.bat) conf:配置文件(server.xml) lib:tomcat依赖的jar文件 ...

  7. 生产Server遭挖矿程序入侵,暴力占用CPU

    区块链的火热,利益驱使必然导致不少PC或Server,被变成肉鸡,执行挖矿程序进行挖矿,进而导致我们正常的程序无法正常. (Centos7 Server)使用top命令查看服务器进程运行情况,发现几个 ...

  8. 【带着canvas去流浪(12)】用Three.js制作简易的MARVEL片头动画(上)

    目录 一. 大作业说明 二.基本思路 三.视频纹理表面修复--UV映射 3.1 问题描述 3.2 纹理贴图的基本原理-UV映射 3.3 关键示例代码 四.小结 示例代码托管在:http://www.g ...

  9. TF项目实战(SSD目标检测)-VOC2007

    TF项目实战(SSD目标检测)-VOC2007 训练好的模型和代码会公布在网上: 步骤: 1.代码地址:https://github.com/balancap/SSD-Tensorflow 2.解压s ...

  10. [PTA] 1002. 写出这个数 (Basic)

    import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Sc ...