导读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一样的[命令](https://www.linuxcool.com/ "命令"),不同的是使用-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](https://www.linuxcool.com/ "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
~~~
内容来源:[https://www.linuxprobe.com/rsync-use-sample.html](https://www.linuxprobe.com/rsync-use-sample.html)
- 简介
- 前端
- html
- css
- css选择器
- fiex布局
- 盒装模型
- javascript
- 原型链
- 作用域
- 事件绑定
- dom
- bom
- jquery
- 选择器
- jquery事件绑定
- layui
- bootstrap
- vue
- 路由(Vue Router)
- Vue CLI
- axios
- vant
- 打包部署
- 自定义组件
- 一些前端效果
- 点击复制功能
- 后端
- php框架
- thinkphp
- 隐藏index.php
- thinkphp实现多表查询
- thinkphp使用ajax单图上传
- thinkphp使用ajax图集上传
- thinkphp使用ajax查询是否重名
- thinkphp使用ajax表单上传
- where多个条件
- 邮件发送功能
- thinkphp短信宝发送短信
- tp5事务
- validate验证二维数组
- yii2
- yii配置邮件
- yii的CRUD操作
- layui中两种展示表单的方式
- laravel
- laravel实例
- laravel登录
- laravel前端注册
- laravel列表
- laravel删除
- laravel编辑
- laravel新增
- Laravel 目录结构
- Laravel 路由
- Laravel 控制器
- Laravel 模型读操作
- Laravel 模型增、删、改操作
- Laravel 中间件
- Laravel 视图
- Laravel ,YII,thinkphp 框架的区别
- 会话控制
- session
- session存入redis
- session创建
- session删除
- cookie
- 面向对象
- 三大特性
- 魔术方法
- 修饰符
- obj变量
- php
- php版本差异
- php7与php5的区别
- PHP 内存溢出问题
- 数据类型
- PHP 垃圾回收机制(GC)
- 文件目录操作
- php函数
- 字符串相关函数
- 数组相关函数
- 超全局数组与超全局变量
- php魔术方法
- 引用变量
- php类库
- 1.根据随机数生成6位密钥
- 2.获取客户端IP地址
- 3.多维数组变成一维数组
- 4.判断是否是微信浏览器
- 5.判断是否是移动端
- 6.隐藏手机号码156***8956
- 7.隐藏邮箱 9533*****@qq.com
- 8.数组排序
- 9.添加操作日志
- 10.无线分类按子分类排序
- 11.从数组中删除空白的元素
- 12.字符串相关类库
- curl模拟post/get请求
- 替换中间四位数
- PHP地理位置计算
- 生成唯一订单号
- 阿拉伯数字转化为大写
- 时间戳转为中文时间
- php获取本年、本月、本周时间戳和日期格式的实例代码(分析)
- 去除数据库的数据空格
- 压缩Zip文件和文件打包下载
- PHP常用六大设计模式
- 单例模式
- 工厂模式
- 注册树模式
- 策略模式
- 适配器模式
- 观察者模式
- 数据库
- 留言板功能
- 所了解的数据库
- sql server
- Memecached
- MongoDB
- mysql
- 存储引擎(MyISAM与InnoDB)
- 库表CRUD操作
- 索引
- 事务
- mysql常用命令
- 悲观锁和乐观锁
- 数据库优化
- 大流量大并发优化
- Redis
- redis相关考点
- 开启redis
- redis缓存cache
- redis存储session
- redis限制提交次数
- 缓存雪崩,击穿,穿透(copy)
- redis数据结构及使用场景
- 消息队列
- Redis、Memecached 区别?
- phpstudy升级mysql版本
- 分表
- 读写分离
- linux
- 开发环境搭建
- mysql配置
- centos7(lnmp)环境搭建
- ubuntu(lnmp)环境搭建
- Nginx
- nginx四个基本功能
- nginx重启出错
- Nginx 的反向代理
- 用户用户组
- 虚拟机安装
- linux常用命令
- chmod命令
- ubuntu下apt-get 命令
- 释放内存
- 云锁安装及使用
- 大部队搭建
- Centos开启端口命令
- Centos禁止root登录
- Centos7修改22端口
- Rsync备份
- 开启端口
- 微信开发
- 辅助开发
- 网站SEO
- TCP/IP协议
- HTTP 请求全过程
- http状态码
- http和https的区别
- http请求三部分
- tcp三次握手
- 三次握手的作用
- tcp四次挥手
- CMS
- 织梦CMS
- 帝国cms
- wordpress
- 禅知cms
- 八大接口
- 微信支付
- 支付宝支付
- 邮件
- 微博登录
- QQ登录
- 快递
- 天气
- 常见算法
- 快速排序
- 冒泡排序
- 选择排序
- 插入排序
- 二分查找
- 希尔排序
- V2Ray搭建
- AJAX
- GIT
- RBAC用户权限管理数据库设计
- 开发中遇到的一些问题
- 资料购买
- 建立ssr服务器
- 简单建
- 申请并使用ssl证书
- 正则表达式手册
- phpstorm
- 注册码
- 备用注册码
- 网站设计概要
- 网站相关功能代码
- 权限(RBAC/AUTH)
- 无限级分类
- 记住登录状态
- email找回密码
- 企业网站开发概要
- 网站后台
- 文章管理
- 栏目管理 CRUD 上级栏目
- 栏目管理
- 友情链接
- 操作日志
- 登录注册
- 权限管理
- 网站配置
- 网站前台
- 首页
- 新闻动态
- 联系
- 案例
- 关于
- 单店铺商城开发概要
- 面试准备
- 有意思的面试题
- 拉钩面试要求
- 慕课面试视频知识总结
- 面试题汇总
- 题目1
- 一些工作的要求
- 前端炒的
- 面试项目介绍
- MySQL面试100 问
- 术语库
- redis相关
- php操作redis
- redis消息队列(异步)
- redis消息队列(同步)