Linux文件同步工具之rsync
学习背景
1.最近公司的项目在使用jenkins做自动化构建,因为jenkins在构建时是比较耗性能的,便单独使用了一台服务器做构建服务器。但是个人觉得这样成本过高,单独拿一台服务器来构建并且该服务器配置不能太差。便想着通过在本地搭建一台jenkins服务,做构建使用。但是这样有一个问题,无法使用webhooks,便选择的轮训构建。其实可以使用内网穿透的方式解决的,该实例还在学习中,也实验成功了,由于使用还不是特别熟悉,后期单独写一篇文章分享。
2.在jenkins构架时,我们需要配置一个work目录,如/root/jenkins/workspace/daodao_system这样的目录,但是我们需要使用nginx配置项目目录,肯定是不可能配置到这个jenkins的工作目录的。通过了解,Linux的同步命令rsync命令可以实现文件同步。这里指的文件同步就是将jenkins工作目录下面的文件同步到我们指定的目录(如我们nginx配置的项目目录)。并且rsync同步命令具备,高效、带宽消耗低、支持复制链接、设备、属主、属组、权限等。
命令介绍
rsync是远程(或本地)复制和同步文件最常用的命令。 借助rsync命令,你可以跨目录,跨磁盘和跨网络远程与本地数据进行复制和同步。举例来说:在两台Linux主机之间进行数据备份和镜像。本文介绍在Linux主机上进行远程和本地传输文件的常见用法,不需要root账户也可以允许rsync。
rsync命令特点
1.高效地复制同步数据到对端,或者对端到本地。
2.支持复制链接、设备、属主、属组、权限。
3.比scp(Secure Copy)更快。rsync使用远程更新协议( remote-update protocol ),这允许仅仅传输两组文件之间的差异。对于首次传输,它将文件或目录的全部内容从源复制到目标,但是从下次起,它仅将变化部分复制到目标。
4.rsync消耗较少的带宽,因为它使用压缩和解压缩方法,同时发送和接收数据两端。HTTP压缩技术。
命令的安装
本演示文章的环境是centos7.0的版本,可以直接使用。如需安装可以参考该文章
命令语法格式
rsync [options] 资源源目录 目标目录
-v : 详细模式输出
-r : 递归拷贝数据,但是传输数据时不保留时间戳和权限
-a : 归档模式, 归档模式总是递归拷贝,而且保留符号链接、权限、属主、属组时间戳
-z : 压缩传输
-h : human-readable
--progress: 显示传输过程
--exclude=PATTERN 指定排除传输的文件模式
--include=PATTERN 指定需要传输的文件模式
--delete 同步时,删除那些DST中有,而SRC没有的文件
--max-size:限定传输文件大小的上限
--dry-run:显示那些文件将被传输,并不会实际传输
--bwlimit:限制传输带宽
-W:拷贝文件,不进行增量检测
使用案例
本地同步某个文件
[root@iZ7eetumtw8c9jZ jenkins]# rsync -zvrh remoting.jar /root/work/
sending incremental file list
created directory /root/work
remoting.jar
sent 796.37K bytes received 68 bytes 1.59M bytes/sec
total size is 872.44K speedup is 1.10
同步结果查看
[root@iZ7eetumtw8c9jZ jenkins]# ll /root/work/
total 852
-rw-r--r-- 1 root root 872440 Nov 3 20:03 remoting.jar
同步某个目录
[root@iZ7eetumtw8c9jZ jenkins]# rsync -zvrh workspace/ /root/work/
sending incremental file list
公司服务器测试/tests/Unit/
公司服务器测试/tests/Unit/ExampleTest.php
公司服务器测试@tmp/
sent 18.82M bytes received 7.30K bytes 7.53M bytes/sec
total size is 29.87M speedup is 1.59
同步结果查看
[root@iZ7eetumtw8c9jZ jenkins]# ll /root/work/
total 868
-rw-r--r-- 1 root root 872440 Nov 3 20:03 remoting.jar
drwxr-xr-x 11 root root 4096 Nov 3 20:05 公司服务器测试
drwxr-xr-x 2 root root 4096 Nov 3 20:04 公司服务器测试@tmp
同步远程目录
[root@tecmint]$ rsync -avz rpmpkgs/ root@192.168.0.101:/home/
root@192.168.0.101's password:
sending incremental file list
./
httpd-2.2.3-82.el5.centos.i386.rpm
mod_ssl-2.2.3-82.el5.centos.i386.rpm
nagios-3.5.0.tar.gz
nagios-plugins-1.4.16.tar.gz
sent 4993369 bytes received 91 bytes 399476.80 bytes/sec
total size is 4991313 speedup is 1.00
总结
使用该命令,最吸引我的地方就是可以实现增量同步,而不是全量同步。这样减少带宽的消耗,也加快了传输的速度。至于该命令同步的原理,可以参考该文章
本文转自微信公众号 深夜有话聊 发布!
Linux文件同步工具之rsync的更多相关文章
- Linux下同步工具inotify+rsync使用详解
1. rsync 1.1 什么是rsync rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.它使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到同步,这 ...
- (转)Linux下同步工具inotify+rsync使用详解
原文:https://segmentfault.com/a/1190000002427568 1. rsync 1.1 什么是rsync rsync是一个远程数据同步工具,可通过LAN/WAN快速同步 ...
- 文件同步工具 lsyncd2.1.6 安装使用问题
项目有文件实时同步备份的需求,做了一下调查,比较好的解决方法是使用lsyncd工具.这里主要记录一下遇到的问题及解决方法. lsyncd 的相关介绍和对比可见: lsyncd实时同步搭建指南——取代r ...
- Rsync 3.1.0 发布,文件同步工具
文件同步工具Rsync 3.1.0发布.2013-09-29 上一个版本还是2011-09-23的3.0.9 过了2年多.Rsync基本是Linux上文件同步的标准了,也可以和inotify配合做实时 ...
- 文件同步工具BT Sync介绍和使用说明
BT Sync介绍 BT 下载,相信大伙儿都知道的.今儿个要介绍的 BT Sync,跟 BT 下载一样,都是 BitTorrent 公司发明滴玩意儿,都是采用 P2P 协议来进行传输. 简而言之,BT ...
- 9款最佳的Linux文件比较工具
程序员和撰稿人在编写程序文件或平常的文本文件时,有时想知道两个文件或同一文件的两个版本之间的差异.你在Linux上比较两个计算机文件时,文件内容之间的差异就叫diff.这一描述来源于提到diff的输出 ...
- window与linux文件传输工具
window与linux文件传输工具 [一般用于SecureCRT ssh中使用] 法一:直接用yum安装lrzsz(推荐) yum install lrzsz -y 注意:rhel安装完系统后 直接 ...
- windows文件同步工具
windows 文件同步工具: realTimesync freefilesync second copy second copy注册码: Name:爱学府软件园 注册码:15BF-E46C-67 ...
- Linux文件编辑工具——VIM
Linux文件编辑工具--VIM 1.VIM基本概述 1.1 什么是vim vi 和 vim 是 Linux 下的一个文本编辑工具.(可以理解为 windows 的记事本,或 Notepad++ 1. ...
随机推荐
- springmvc(三)
Spring MVC上传 Spring MVC为文件上传提供了直接的支持,这种支持是用即插即用的MultipartResolver实现的.SpringMVC使用Apache Commons FileU ...
- 一个PHP文件搞定微信H5支付
/ 更新于 2018-07-02 / 8 条评论 过年期间也坚持要撸码啊接着给博客除草,在这个小除夕是情人节的一天,祝大家新年快乐,情人节能够顺利脱单~~~ 回归正题,这篇文章介绍一下微信H5支付, ...
- 理解Android中的注解与反射
反射 Java反射(Reflection)定义 Java反射机制是指在运行状态中 对于任意一个类,都能知道这个类的所有属性和方法:对于任何一个对象,都能够调用它的任何一个方法和属性: 这样动态获取新的 ...
- 01 python安装与初识
一.简要概述 python学习时设计要大于开发. 二.编程语言 1.分类 编程语言分为高级语言和低级语言.高级语言如python.c#,Java.PHP等,低级语言(基础语言)如C.汇编语言. 2.机 ...
- Http协议Content-Length详解
前言 http协议是互联网中最重要的协议之一,虽然看上去很简单,但是实际中经常遇到问题,我们就已经遇到好几次了.有长连接相关的,有报文解析相关的.对http协议不能一知半解,必须透彻理解才行.本文通过 ...
- Python+Tornado+Tampermonkey 获取某讯等主流视频网站的会员视频解析播放
近期,<哪吒之魔童降世>在各大视频软件可以看了,然而却是一贯的套路,非会员谢绝观看!!!只能从国内那些五花八门的视频网站上找着看了,或者通过之前本人说的 Chrome 的油猴插件,传送门 ...
- 一种Cortex-M内核中的精确延时方法
本文介绍一种Cortex-M内核中的精确延时方法 前言 为什么要学习这种延时的方法? 很多时候我们跑操作系统,就一般会占用一个硬件定时器--SysTick,而我们一般操作系统的时钟节拍一般是设置100 ...
- 洛谷 1552 [APIO2012]派遣
题目背景 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿. 题目描述 在这个帮派里,有一名忍者被称之为Master.除了Master以外,每名忍者都有且仅有一个上级.为保密 ...
- SQL SERVER数据库内,需要序列号进行排序时,排序方法
举例如下: SELECT ROW_NUMBER()OVER(ORDER BY (SELECT 0)) AS ROWNUM,* FROM YXHIS2018..TBMZGHMX201801 --不排序S ...
- Go语言及Beego框架环境搭建
在开始环境搭建之前,我们先一起来看看: Go有什么优势: 不用虚拟机,它可直接编译成机器码,除了glibc外没有其他外部依赖,部署十分方便,就是扔一个文件就完成了. 天生支持并发,可以充分的利用多核, ...