rsync

  是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据镜像同步备份的优秀工具。rsync适用于Unix/Linux/Windows等多种操作系统平台。
 

rsync命令有三种常见模式

具体如下:
 
1)本地模式:
rsync [option] [SRC] [DEST]
rsync [选项] [源文件] [目标文件] 2)通过远程Shell访问模式;
拉取(Pull):
rsync [option] [USER@]HOST:SRC [DEST]
rsync [选项] 用户@主机:源文件 [目标文件]
推送(Push);
rsync [option] [SRC] [USER@]HOST:DEST
rsync [选项] [源文件] 用户@主机:目标文件
3)rsync守护进程模式
拉取(Pull):
rsync [option] [USER@]HOST:SRC [DEST]
rsync [选项] 用户@主机:源文件 [目标文件]
rsync [option] rsync://[USER@]HOST[:PORT]/SRC [DEST]
rsync [选项] rsync://用户@主机:端口/源文件 [目标文件] 推送(Push): rsync [option] [DEST] [USER@]HOST:SRC
rsync [选项] [目标文件] 用户@主机:源文件
rsync [option] [DEST] rsync://[USER@]HOST[:PORT]/SRC
rsync [选项] [目标文件] rsync://用户@主机:端口/源文件

rsync命令的参数选项及说明

-V,--verbose    详细模式输出,传输时的进度等信息
-z,-compress    传输时进行压缩以提高传输效率,-compress-level=NUM可按级别压缩
-a,-archive     以递归方式传输文件,并保持所有文件的属性,相当于-rtopgDl
-r,-recursive   对子目录以递归模式,即目录下的所有目录都以同样的模式传输,注意是小写r
-t,-times       保持文件的时间信息
-o,--owner      保持文件的属主信息
-p,-perms       保持文件的权限
-g,-group       保持文件的属组信息
-P,--progress   显示同步的过程及传输时的进度等信息
-D,-devices     保持设备文件信息
-l,-links       保留软链接
-e,--rsh=COMMAND    使用的信道协议,指定替代rsh的shell程序,例如:ssh
-n               测试选项,模拟执行
-exclude=PATTERN      指定排除不需要传输的文件模式(和tar参数一样)
-exclude-from=FILE    从文本文件读取需要排除的文件列表
-bwlimit=KBPS         限制传输速度
-delete               使目标目录内容和源保持目录一致,删除不同的文件
 
 

源地址带与不带斜线(/)的区别的例子。

[root@cs6 /]# mkdir -p /data1/{test1,test2} /data2
[root@cs6 /]# rsync -av /data1/ /data
data1/ data2/
[root@cs6 /]# rsync -av /data1/ /data2 #<=如果源目录的末是有斜线,就会复制目录内的内客,而不是复制目录本身。
sending incremental file list
test1/
test2/ sent 61 bytes received 20 bytes 162.00 bytes/sec
total size is 0 speedup is 0.00
[root@cs6 /]# ls /data2
test1 test2
[root@cs6 /]# rsync -av /data1 /data2 #<=如果源目录没有斜线,则会复制目录本身及目录下的内容。
sending incremental file list
data1/
data1/test1/
data1/test2/ sent 74 bytes received 24 bytes 196.00 bytes/sec
total size is 0 speedup is 0.00
[root@cs6 /]# ls /data2/
data1 test1 test2
[root@cs6 /]#
目标目录的末尾有没有斜线都不影响最终结果。

本地复制的例子(类似cp)

 其比cp好的地方就是可以实现增量复制。


[root@cs6 /]# rsync -av /etc/hosts /tmp    #<==源文件/etc/hosts和目标目录/tmp都在同一台主机之上。
sending incremental file list
hosts sent 231 bytes received 31 bytes 524.00 bytes/sec
total size is 158 speedup is 0.60
[root@cs6 /]# ll -h /tmp/hosts
-rw-r--r--. 1 root root 158 Jan 12 2010 /tmp/hosts

删除文件的特殊例子(--delete)

问题:一个目录下有几十万个文件,用什么方式可以最快删除所有文件?
 
[root@cs6 ~]# mkdir /null    #<==创建一个空目录。
[root@cs6 ~]# rsync -av --delete /null/ /tmp/ #<==选项--delete 使tmp目录内容和空目录保持一致,不同的文件及目录将会被删除,即null里有什么内容,tmp里就有什么内容。null里没有的,而tmp里有的就必须要删除,因为null目录为空,因此此命令会删除/tmp目录中的所有内容。
sending incremental file list
./
deleting tmp/html/oldboy/test/
deleting tmp/html/oldboy/
deleting tmp/html/9.html
deleting tmp/html/8.html
deleting tmp/html/10.html
deleting tmp/html/1.html
......
deleting install.log
deleting hosts
deleting etc.tar.gz
deleting anaconda-ks.cfg
sent 29 bytes received 15 bytes 88.00 bytes/sec
total size is 0 speedup is 0.00
[root@cs6 ~]# ls /tmp

拉取推送文件及目录(类似前文的scp命令)

[root@cs6 ~]# rsync -av 10.0.0.55:/tmp/ /tmp
root@10.0.0.55's password:
receiving incremental file list
./
anaconda-ks.cfg
ks-script-4WSQ4c
services
yum.log
[root@cs6 ~]# ls /tmp
anaconda-ks.cfg ks-script-4WSQ4c services tmp yum.log
[root@cs6 ~]# rsync -av /tmp/ 10.0.0.55:/tmp/
root@10.0.0.55's password:
sending incremental file list sent 1115 bytes received 27 bytes 326.29 bytes/sec
total size is 20341760 speedup is 17812.40
    与scp命令复制的结果进行对比可以发现,使用rsync复制时,重复执行复制直至目录下文件相同就不再进行复制了。

利用SSH隧道模式(-e)拉取推送文件及目录

[root@cs6 ~]# touch /tmp/test.txt
[root@cs6 ~]# rsync -av -e 'ssh -p 22' /tmp 10.0.0.55:/tmp/
#<=前面的案例使用rsync同步数据都是明文传输的,在要求保障数据安全的场景下,可以使用-e选项借助SSH随道进行加密传输数据,-p是SSH命令的选项,指定SSH传输的端口号为22,这条命令的结果是将本地/tmp目录下的内容通过SSH加密隧道推送数据到10.0.0.55主机的/tmp目录。
同理,执行"rsync -av -e "ssh -p 22' 10.0.0.55:/tmp/ /tmp” 可以从10.0.0.55主机的/tmp日录通过SSH加密隧道将数据拉取到本地/tmp目录下。
root@10.0.0.55's password:
sending incremental file list
tmp/
tmp/anaconda-ks.cfg
tmp/ks-script-4WSQ4c
 
经验技巧
下面列出rsync命令的经验技巧以供读者参考。
1)生产场景常用选项-avz,相当于-vzrtopg(这是网上文档常见的选项),但是此处建议大家使用-avz选项,更简单明了。如果在脚本中使用也可以省略-v选项。
2)关于z压缩选项的使用建议,如果为内网环境,且没有其他业务占用带宽,可以不使用z选项。不压缩传输,几乎可以满带宽传输(千M网络),压缩传输则网络发送速度就会骤降,压缩的速率赶不上传输的速度。
3)选项n是一个提高安全性的选项,它可以结合-v选项输出模拟的传输过程,如果没有错误,则可以去除n选项真正的传输文件。
 
 
 
6.7老男孩逆袭思想:新手如何高效地提问
1)问问题前要有充分的准备,努力让自己问问题的水平更专业。
2)想好你要问的内容,确定是否能表达清楚,可以先和小伙伴提前练习一下表达能力。
3)如果口头表达不清楚,就写出来,给小伙伴看。采用适合自己的表达方式(当面/电话/邮件/微信/QQ)进行沟通很重要。
4)问问题时,把自己尝试过的解决方法也一并说出来,避免别人解答时走弯路。
5)问问题应礼貌客气,但要学会开门见山,及时抛出问题。
6)Linux问题错误日志及输出报错类问题尽量少截图,若使用QQ发文字,也要注意避免将文字自动转换为表情,也不要自行翻译后再描述,就保持原样给出错误描述。解答的人可能需要搜索才能帮到你,如果你提供的是截图,那么解答人如果很忙就会很容易放弃帮你。
7)不要吊死在一棵树上,可以同时问多个人(普遍培养/重点选拔)。
8)最终解决完问题后,将解题思路整理成文档,无论别人是否帮到你,都要把答案发给你问过问题的人,学会感恩,未来的路才会越走越宽(感恩帮助你的人,那是应该的,对没有帮到你的人也感恩才叫智慧)。
9)通过赞美、凸显重要性、满足心理需求等方式,让他人乐于帮你解决问题。
10)多问封闭式问题,少问开放式问题,多为解答问题的人着想,是否能让对方省事,决定了对方是否愿意帮你以及帮你的速度。 
 
 
-

6.6 rsync:文件同步工具的更多相关文章

  1. Rsync文件同步工具

    前段时间因公司需求,需要把备份的文件进行同步保存,后面就想到了我们大家都最熟悉的文件同步工作Rsync,于是就捣鼓了一下午时间,然后总结了下大概过程和参数详情. 首先了解了下rsync同步的大致原理: ...

  2. Rsync 3.1.0 发布,文件同步工具

    文件同步工具Rsync 3.1.0发布.2013-09-29 上一个版本还是2011-09-23的3.0.9 过了2年多.Rsync基本是Linux上文件同步的标准了,也可以和inotify配合做实时 ...

  3. Rsync文件同步

    Rsync文件同步 本章结构 关于rsync 1.一款增量备份工具,remote sync,远程同步,支持本地复制或者与其他SSH.rsync主机同步,官方网站:http://rsync.samba. ...

  4. Linux实战教学笔记21:Rsync数据同步工具

    第二十一节 Rsync数据同步工具 标签(空格分隔): Linux实战教学笔记-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载,转载 ...

  5. rsync - 远程同步工具

    一直没有对这个命令太有深入的理解 简介 rsync 即 remote sync,一个远程与本地文件同步工具.rsync 使用的算法能够最小化所需复制的数据,因为它只移动那些修改了的文件. rsync ...

  6. Rsync数据同步工具

                                        Rsync数据同步工具 什么是Rsync? Rsync是一款开源的.快速的.多功能的,可以实现全量及增量的本地或原程数据同步备份 ...

  7. [cmd] rsync - 远程同步工具

    简介 rsync 即 remote sync,一个远程与本地文件同步工具.rsync 使用的算法能够最小化所需复制的数据,因为它只移动那些修改了的文件. rsync 是一个非常灵活的同步工具,它也是一 ...

  8. rsync数据同步工具的配置

    rsync数据同步工具的配置 1. rsync介绍 1.1.什么是rsync rsync是一款开源的快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具.Rsync软件适用于 unix ...

  9. Rsync远程同步工具使用

    rsync远程同步工具使用 Rsync(remote synchronize) 是一个远程数据同步工具,可以使用"Rsync算法"同步本地和远程主机之间的文件.Rsync的好处是只 ...

  10. 【基础】:Rsync数据同步工具

    第二十一节 Rsync数据同步工具 1.1 Rsync介绍 1.1.1 什么是Rsync? 1.1.2 Rsync简介 1.3 Rsync的特性 1.1.4 Rsync的企业工作场景说明 1.2 Rs ...

随机推荐

  1. baystack(ret2one_gadget)

    babystack 首先检查一下保护 全保护开启,我们IDA分析一下. main函数很简单,首先第一个read明显存在漏洞,如果不是以 \n 结尾会存在栈中地址的泄漏. payload = 'A'*0 ...

  2. Spring Boot 2.x 快速集成Kafka

    1 Kafka Kafka是一个开源分布式的流处理平台,一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据.Kafka由Scala和Java编写,2012年成为Apache ...

  3. N 皇后-力扣解题

    n 皇后问题 研究的是如何将 n 个皇后放置在 n*n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案. 每一种解法包含一个不同的 n 皇后问 ...

  4. 拿到蚂蚁金服的offer是一种什么体验?3年Java程序员分享面经

    前言:我是一名三年的Java程序员,之前一直是在外包公司工作的.在这个月五号的时候,通过我的学长做内推,有了去蚂蚁金服面试的机会.我是在12号接到的电话面试的,因为蚂蚁金服需要7天的简历评估的.还有就 ...

  5. 【ElasticSearch】ES 读数据,写数据与搜索数据的过程

    ES读数据的过程: 1.ES客户端选择一个node发送请求,该请求作为协调节点(coordinating node): 2.corrdinating node 对 doc id 对哈希,找出该文档对应 ...

  6. 过 DNF TP 驱动保护(一)

    过 DNF TP 驱动保护(一)   文章目录:                   01. 博文简介: 02. 环境及工具准备: 03. 分析 TP 所做的保护: 04. 干掉 NtOpenProc ...

  7. Linux下Apache服务的部署和配置

    目录 Apache服务的安装 yum源安装: 目录文件 源码包安装: 目录文件: Apache中添加对php的支持 Apache中添加php对mysql数据库的支持 Apache服务的高级配置 1:配 ...

  8. UVA11384正整数序列(把123..变成0的最小步数)

    题意:      给定一个正整数n,你的任务是最少的操作次数把序列1 2 3 4 5...n中所有的数字都变成0,每次操作可以从序列中选择一个活多个整数,同时减去一个相同的正整数,比如 1 2 3可以 ...

  9. 逆向 time.h 函数库 time、gmtime 函数

    0x01 time 函数 函数原型:time_t time(time_t *t) 函数功能:返回自纪元 Epoch(1970-01-01 00:00:00 UTC)起经过的时间,以秒为单位.如果 se ...

  10. FlinkSQL使用自定义UDTF函数行转列-IK分词器

    一.背景说明 本文基于IK分词器,自定义一个UDTF(Table Functions),实现类似Hive的explode行转列的效果,以此来简明开发过程. 如下图Flink三层API接口中,Table ...