11个rsync使用实例
rsync表示 remote sync,其用于在本地或与远程主机间进行文件或目录备份。相比较scp等工具,rsync有以下优点:
- 速度:除首次全拷贝外,其他时候实现增量拷贝,加快传输速度
- 安全:传输数据时可用ssh加密传输
- 带宽占用:rsync可对数据进行分块压缩传输,相比其他文件传输工具占用更少带宽
- 权限限制:非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使用实例的更多相关文章
- 11. SpringBoot 之CRUD实例
SpringBoot静态页路径,可直接通过URL访问的: /META-INF/resources /resources /static /public 而 5. /template 只和模板引擎 ...
- KindEditor 4.1.11最新版 网站实例 包含使用方法 下载地址
KindEditor是非常好的富媒体文本编辑系统,短小精悍,可惜网上找到的都是有各种问题!一怒之下,我自己进行了修改和配置,搞成了一个网站示例.下载解压后,可以直接运行!!完全无问题.! Kinded ...
- redis3.2.11多机多实例集群部署及测试连接情况
机器配置 redis3.2.11安装配置规划 机器 192.168.169.136(本机虚拟机1) 192.168.169.137(本机虚拟机2) 系统 Red Hat Enterprise Linu ...
- rsync应用实例
一. 通过ssh的方式 前面介绍的rsync 5种方式当中,第二.第三(1个冒号)就属于通过ssh的方式,这种方式其实就是让用户去登录到远程机器,然后执行rsync的任务. [root@local ...
- 【Python】【demo实验11】【练习实例】【三个整数的立方和】
目的:找到 除了9n±4型自然数外,所有100以内的自然数都能写成三个整数的立方和 这每个数的表达方式: 源代码: #!/usr/bin/python # encoding=utf-8 # -* ...
- 【11】Redis .net 实例 StackExchange.Redis框架
1.创建测试项目并下载nuget包:StackExchange.Redis PM> Install-Package StackExchange.Redis 2.创建 RedisHelper类 p ...
- 11.树形Model/View实例
任务1:显示如图的树形结构 思考: 1.使用QTreeView显示. 2.Model使用QStandardItemModel,qt的一个标准model. 3.QStandardItemModel下每一 ...
- 使用rsync命令提高文件传输效率
众多数据库服务器的管理过程中,在不同服务器间的文件传输是免不了的.您可以使用scp命令或FTP方法完成文件的发送和接收,这篇文章我将给大家介绍另外一种方法,这就是rsync命令.rsync是文件传输程 ...
- Rsync安装和配置
一.Rsync简介 1.1什么是Rsync Rsync是一款快速的,开源的,多功能的,可以实现全量和增量的远程和本地的数据同步和数据备份的工具. 全量的概念是:全部备份. 增量的概念是:差异化备份.对 ...
随机推荐
- C# 反射的详细理解
网友A的解释: C# 反射机制的学习心得 首先说说,为什么要学习 反射 呢?有什么用啊. 在我们写程序的时候,经常会用到一些类中的方法,那么就要调用这些个类.如果不是在一个命名空间里时,就要引用相 ...
- Html5学习导航
给大家推荐一下学习研究HTML5必备的一些个网站,更加有利于大家对HTML5的学些和研究.如果各位童鞋还有更多的,欢迎投递资源给我们,也可以支持我们,让我们利用大家的力量收集更多的HTML5学习资料, ...
- C语言实现-航空订票系统(飞机订票系统)
开发环境:CodeBlocks 开发语言:C 实现功能:登录,订票,退票 数据存储:文本读写 涉及文件: 相关文件下载: 码云:https://gitee.com/ikaros-521/c_pro ...
- kuangbin专题 专题一 简单搜索 棋盘问题 POJ - 1321
题目链接:https://vjudge.net/problem/POJ-1321 题意:给一张棋盘,‘#’表示可以下棋的地方,‘.’表示不能下棋的地方.棋盘是n*n的,要求能放下k个棋子,要求k个棋子 ...
- 聊聊C语言的预编译指令include
"include"相信大家不会陌生,在我们写代码时,开头总会来一句"include XXX".include是干嘛用的,很多教材都提到了,因此这里不会再详细解释 ...
- STM32F0_HAL库驱动描述——LL驱动程序概述
LL驱动概述 低层(LL)驱动器旨在提供快速轻量级的专家导向层,它比硬件更接近硬件: 与HAL相反,LLAPI不适用于优化访问不是关键功能的外设设备,或者需要大量软件配置和/或复杂的高级堆栈(如USB ...
- Java 内存映射文件
import java.io.*; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import jav ...
- 【弱化版】【P3371 【模板】单源最短路径(弱化版)】-C++
→原题传送门← 看到题目描述我就知道,这道题不能用SPFA[手动补滑稽] 那么我这道题目采用的是dijkstra算法不了解的去补一下知识哈. dij的模板: #include<bits/stdc ...
- 个人永久性免费-Excel催化剂功能第76波-图表序列信息维护
在之前开发过的图表小功能中,可以让普通用户瞬间拥有高级图表玩家所制作的精美图表,但若将这些示例数据的图表转换为自己实际所要的真实数据过程中,仍然有些困难,此篇推出后,再次拉低图表制作门槛,让真实的数据 ...
- C#3.0新增功能06 对象和集合初始值设定项
连载目录 [已更新最新开发文章,点击查看详细] 使用 C# 可以在单条语句中实例化对象或集合并执行成员分配. 对象初始值设定项 使用对象初始值设定项,你可以在创建对象时向对象的任何可访问字段或属 ...