菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
0
0

Linux 文件同步工具之 rsync

原创
05/13 14:22
阅读数 370

学习背景

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

发表评论

0/200
0 点赞
0 评论
收藏
为你推荐 换一批