文档章节

rsync 使用示例

linuxprobe16
 linuxprobe16
发布于 2016/11/10 14:13
字数 2065
阅读 15
收藏 0
导读 Rsync(remote sync) 是用于同步某一位置文件和目录到另一位置的有效方法。备份的位置可以在本地服务器或远程服务器。本站之前亦有介绍rsync的安装配置和教程,详看《rsync的安装和配置》一文。

rsync特征

速度:第一次的rsync同步源的整个内容目录到目标位置。之后,rsync只传递改变的块或字节到目标位置,使传输非常快。
安全:rsync在传输中允许使用ssh协议加密数据。
更少的带宽:rsync分别在发送和接收端对数据进行压缩和解压缩。所以在使用rsync传输数据时使用的带宽总是比使用其他文件传输协议来的少。
特权:不需要特殊权限来安装和执行rsync

rsync语法

$ rsync options source destination

source和destination可以是本地或远程。在远程的情况下,需要指定登录名、远程服务器的名称和位置。

rsync使用示例

1. 在本地服务器上同步两个目录

用rsync – zvr在本地服务器上同步两个目录

$ rsync -zvr /var/opt/installation/inventory/ /root/temp
building file list ... done
sva.xml
svB.xml
.
sent 26385 bytes  received 1098 bytes  54966.00 bytes/sec
total size is 44867  speedup is 1.63

在上面rsync例子中:
• –z:允许压缩
• –v:冗长
• –r:递归
注:Rsync不会同步源文件或目录的时间戳

$ ls -l /var/opt/installation/inventory/sva.xml /root/temp/sva.xml
-r--r--r-- 1 bin  bin  949 Jun 18  2009 /var/opt/installation/inventory/sva.xml
-r--r--r-- 1 root bin  949 Sep  2  2009 /root/temp/sva.xml

2. 用rsync –a同步时间戳

rsync的-a选项是archive的意思,加了之后有以下作用:
• 递归模式
• 同步软链接
• 同步权限
• 同步时间戳
• 同步属主和属组
现在,我们执行与例1一样的命令,不同的是使用-a选项。

$ rsync -azv /var/opt/installation/inventory/ /root/temp/
building file list ... done
./
sva.xml
svB.xml
.
sent 26499 bytes  received 1104 bytes  55206.00 bytes/sec
total size is 44867  speedup is 1.63

我们可以看到,rsync将源目录下文件的时间戳也同步过来了。

$ ls -l /var/opt/installation/inventory/sva.xml /root/temp/sva.xml
-r--r--r-- 1 root  bin  949 Jun 18  2009 /var/opt/installation/inventory/sva.xml
-r--r--r-- 1 root  bin  949 Jun 18  2009 /root/temp/sva.xml

3. 只同步一个文件

指定文件名称,只同步一个文件

$ rsync -v /var/lib/rpm/Pubkeys /root/temp/
Pubkeys

sent 42 bytes  received 12380 bytes  3549.14 bytes/sec
total size is 12288  speedup is 0.99

4. 将本地文件同步到远程服务器

当同步到远程服务器时,我们需要指定用户名、远程服务器的IP地址和目标路径。格式为:username@remote_server_ip:path

$ rsync -avz /root/temp/ linuxprobe@192.168.200.10:/home/linuxprobe/temp/
Password:
building file list ... done
./
rpm/
rpm/Basenames
rpm/Conflictname

sent 15810261 bytes  received 412 bytes  2432411.23 bytes/sec
total size is 45305958  speedup is 2.87

5. 将远程文件同步到本地服务器

$ rsync -avz linuxprobe@192.168.200.10:/var/lib/rpm /root/temp
Password:
receiving file list ... done
rpm/
rpm/Basenames
.
sent 406 bytes  received 15810230 bytes  2432405.54 bytes/sec
total size is 45305958  speedup is 2.87

6. 指定使用某一shell同步

远程同步时,Rsync可以指定使用某一shell进行安全传输。如:使用rsync –e ssh选择ssh进行安全连接。

$ rsync -avz -e ssh linuxprobe@192.168.200.10:/var/lib/rpm /root/temp
Password:
receiving file list ... done
rpm/
rpm/Basenames

sent 406 bytes  received 15810230 bytes  2432405.54 bytes/sec
total size is 45305958  speedup is 2.87

7. 不覆盖目标位置已改变的文件

如果目标位置的文件已被修改,而我们不希望旧文件覆盖它时,可以使用-u选项。下面例子中,目标位置的文件Basenames已经被修改,使用-u 选项是它不被旧文件覆盖。

$ ls -l /root/temp/Basenames
total 39088
-rwxr-xr-x 1 root root        4096 Sep  2 11:35 Basenames

$ rsync -avzu linuxprobe@192.168.200.10:/var/lib/rpm /root/temp
Password:
receiving file list ... done
rpm/

sent 122 bytes  received 505 bytes  114.00 bytes/sec
total size is 45305958  speedup is 72258.31

$ ls -lrt
total 39088
-rwxr-xr-x 1 root root        4096 Sep  2 11:35 Basenames

8. 只同步目录树结构(不包括文件)

使用rsync - d选项只将目录树从源位置同步至目标位置。下面的示例中,以递归方式只同步目录树而不同步目录中的文件。

$ rsync -v -d linuxprobe@192.168.200.10:/var/lib/ .
Password:
receiving file list ... done
logrotate.status
CAM/
YaST2/
acpi/

sent 240 bytes  received 1830 bytes  318.46 bytes/sec
total size is 956  speedup is 0.46

9. 查看rsync进度

使用rsync –progress选项可以查看rsync进度,如多少文件已经被拷贝,完成率是多少等

$ rsync -avz --progress linuxprobe@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ...
19 files to consider
./
Basenames
     5357568 100%   14.98MB/s    0:00:00 (xfer#1, to-check=17/19)
Conflictname
       12288 100%   35.09kB/s    0:00:00 (xfer#2, to-check=16/19)
.
.
.
sent 406 bytes  received 15810211 bytes  2108082.27 bytes/sec
total size is 45305958  speedup is 2.87

10. 删除目标位置创建的文件

若我们希望rsync时删除在源位置不存在而在目标位置存在的文件,可以使用-delete选项。
此例中,我们在目标位置创建了一个新文件名为new-file.txt.,在同步过程中,-delete选项删除了new-file.txt文件

# Source and target are in sync. Now creating new file at the target.
$ > new-file.txt

$ rsync -avz --delete linuxprobe@192.168.200.10:/var/lib/rpm/ .
Password:
receiving file list ... done
deleting new-file.txt
./

sent 26 bytes  received 390 bytes  48.94 bytes/sec
total size is 45305958  speedup is 108908.55

11. 在目标位置不创建新文件

使用-existing选项使得在同步时只同步目标位置存在的文件,而不创建新文件。

#在源位置创建新文件new-file.txt
[/var/lib/rpm ]$ > new-file.txt
#同步目录
$ rsync -avz --existing root@192.168.1.2:/var/lib/rpm/ .
root@192.168.1.2's password:
receiving file list ... done
./

sent 26 bytes  received 419 bytes  46.84 bytes/sec
total size is 88551424  speedup is 198991.96

12.查看源和目标的不同文件或目录

源位置:

$ ls -l /var/lib/rpm
-rw-r--r-- 1 root root  5357568 2010-06-24 08:57 Basenames
-rw-r--r-- 1 root root    12288 2008-05-28 22:03 Conflictname
-rw-r--r-- 1 root root  1179648 2010-06-24 08:57 Dirnames

目标位置:

$ ls -l /root/temp
-rw-r--r-- 1 root root    12288 May 28  2008 Conflictname
-rw-r--r-- 1 bin  bin   1179648 Jun 24 05:27 Dirnames
-rw-r--r-- 1 root root        0 Sep  3 06:39 Basenames

源和目标之间有两个不同之处:1. 文件Dirnames属主和属组不同 2. 文件Basenames的大小不同
使用-i选项来显示不同之处,如下所示

$ rsync -avzi linuxprobe@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ... done
>f.st.... Basenames
.f....og. Dirnames

sent 48 bytes  received 2182544 bytes  291012.27 bytes/sec
total size is 45305958  speedup is 20.76
In the output it displays some 9 letters in front of the file name or directory name indicating the changes.

可以看到,在文件名或目录名前有9个字符来代表不同之处。此例中,Basenames和Dirnames前的字符代表含义如下:

> 代表文件已被传输到本地主机。
f:代表这是个文件
s:代表文件大小发生变化
t:代表时间戳发生变化
o:属主发生变化
g:属组发生变化

13. 在传输时指定包括或排除某些文件
只传输’P’开头的文件或目录(使用rsync include),不传输其他任何文件(使用rsync exclude)

$ rsync -avz --include 'P*' --exclude '*' linuxprobe@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ... done
./
Packages
Providename
Provideversion
Pubkeys

sent 129 bytes  received 10286798 bytes  2285983.78 bytes/sec
total size is 32768000  speedup is 3.19

14. 不传输大文件

使用rsync –max-size选项后,rsync将不传输大于指定大小的文件

$ rsync -avz --max-size='100K' linuxprobe@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ... done
./
Conflictname
Group
Installtid
Name
Sha1header
Sigmd5
Triggername

sent 252 bytes  received 123081 bytes  18974.31 bytes/sec
total size is 45305958  speedup is 367.35

15. 传输整个文件

rsync的主要特征之一是它只传输改变的块到目标位置,而不是传输整个文件。如果网络带宽对你不是问题(CPU有),您可以使用-w选项来传输整个文件。它会加速rsync过程,因为它不用在源和目标位置执行校验和。

#  rsync -avzW  linuxprobe@192.168.200.10:/var/lib/rpm/ /root/temp
Password:
receiving file list ... done
./
Basenames
Conflictname
Dirnames
Filemd5s
Group
Installtid
Name

sent 406 bytes  received 15810211 bytes  2874657.64 bytes/sec
total size is 45305958  speedup is 2.87

免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com/

本文转载自:http://www.linuxprobe.com/rsync-use-sample.html

共有 人打赏支持
linuxprobe16
粉丝 12
博文 844
码字总数 197064
作品 0
河东
私信 提问
Rsync数据同步工具应用指南

1、Rsync数据同步工具应用指南 简介 Rsync的特性: Rsync的工作方式: Rsync命令同步选项参数: 本地主机模式示例 远程RPC模式示例 简介 Rsync是一款开源的、快速的、多功能的、可实现全量及...

char_cce
2017/05/16
0
0
day37:rsync工具及常用选项

1、rsync:remove sync(远程同步),数据备份工具,可以实现本地同步和远程同步,同步时可以增量同步,只同步不相同的数据,也就是说只同步两个文件不不同的部分,因此速度非常快: rsync的五种命令...

芬野de博客
08/14
0
0
rsync工具的常用选项、ssh同步介绍

1. rsync工具介绍 rsync是数据备份工具(字面意思可以理解为远程同步),不仅可以远程同步数据,而且可以本地同步数据(类似与cp),但不同于cp或scp的一点是,它不会覆盖以前的数据(如果数...

网虫变网工
06/26
0
0
Linux学习-1031(rsync同步工具 上)

10.28 rsync工具介绍 10.29/10.30 rsync常用选项 10.31 rsync通过ssh同步 一、 rsync工具介绍 rsync是一个同步工具,在日常的运维中常会用到。它可以本地同步,也实现可以远程两台机器同步。...

wxy丶
11/19
0
0
rsync----增量备份工具

sync:将内存中的数据同步到硬盘上 特点: 方便增量备份 可镜像保存整个目录树和文件系统 保持文件的权限、时间、软硬链接 传输效率高 可以使用SSH加密通道 启用rsync: vi /etc/xinetd.d/rsy...

51xuexiit
2014/01/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql 时间格式化

DATE_FORMAT

1713716445
3分钟前
0
0
聊聊flink的PartitionableListState

序 本文主要研究一下flink的PartitionableListState PartitionableListState flink-runtime_2.11-1.7.0-sources.jar!/org/apache/flink/runtime/state/DefaultOperatorStateBackend.java /*......

go4it
8分钟前
0
0
Micropython教程之TPYBoard开发板制作电子时钟(萝卜学科编程教育)

1.实验目的 1. 学习在PC机系统中扩展简单I/O?接口的方法。 2. 什么是SPI接口。 3. 学习TPYBoard I2C接口的用法。 4. 学习LCD5110接线方法。 5. 设定时钟并将当前时间显示在LCD5110上。 2.所需...

bodasisiter
8分钟前
0
0
js 闭包

闭包,是 Javascript 比较重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是 ECMAScript 规范给的定义,如果没有实战经验,很难从定义去理解它。因此,本文不会对闭包的概念...

MrBoyce
13分钟前
0
0
Java B2B2C o2o多用户商城 springcloud架-企业云架构common-service代码结构分析

当前的分布式微服务云架构平台使用Maven构建,所以common-service的通用服务按照maven构建独立的系统服务,结构如下: particle-commonservice: spring cloud 系统服务根项目,所有服务项目...

itcloud
19分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部