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. Recoil Input 光标位置被重置到末尾的问题

    考察如下代码,页面中有个输入框,通过 Recoil Atom 来存储输入的值. App.tsx function NameInput() { const [name, setName] = useRe ...

  2. Install Tensorflow object detection API in Anaconda (Windows)

    This blog is to explain how to install Tensorflow object detection API in Anaconda in Windows 10 as ...

  3. JavaWeb 补充(Servlet)

    Servlet: server applet 概念: 运行在服务器端的小程序     * Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则.     * 将来我们自 ...

  4. 又一起.NET程序挂死, 用 Windbg 抽丝剥茧式的真实案例分析

    一:背景 1. 讲故事 前天有位粉丝朋友在后台留言让我帮忙看看他的 Winform程序 UI无响应 + 410线程 到底是啥情况,如下图: 说实话,能看到这些真实案例我是特别喜欢的 ,就像医生看病,光 ...

  5. 为什么 Spring Boot 2.3.0 放弃Maven最终拥抱Gradle

    在 2.3.0 中对 Spring Boot 进行了相当重大的更改,这是使用 Gradle 而非 Maven 构建的项目的第一个版本. Spring 的每个项目都独立的项目组在开发运营,在用户最常使用 ...

  6. vue Element-ui 表格多选 修改选中行背景色

    实现的效果: 整体思路方式: 1.给获取到的数据添加自定义的className 2.在点击行(row-click)和手动点击勾选框的事件(select-all)中获取到当前的row的className ...

  7. WSL2 Ubuntu 图形界面环境搭建(Xfce4 、XServer)

    安装wsl2和Ubuntu 在安装了wsl2后有时候需要传文件到ubuntu上面,比如传一个测试项目什么的.因为wsl里面挂载了本地的磁盘,所以准备安装个图形界面,操作下也挺简单的. 关于wsl2和U ...

  8. hdu4810

    题意:      给你n个数,让你输出n个数,没一次输出的是在这n个数里面取i个数异或的和(所有情况<C n中取i>). 思路:      首先把所有的数都拆成二进制,然后把他们在某一位上 ...

  9. POJ1904 强联通(最大匹配可能性)

    题意:       有n个王子,n个公主,然后给你每个王子喜欢的公主,最后问你在不影响最大匹配的前提下,每个王子可以匹配那些公主. 思路:       是hdu4685的减弱版,之前研究过hdu468 ...

  10. Android so注入( inject)和Hook(挂钩)的实现思路讨论

    本文博客:http://blog.csdn.net/qq1084283172/article/details/54095995 前面的博客中分析一些Android的so注入和Hook目标函数的代码,它 ...