一、rsync 简介

rsync 是类 unix 系统下的数据镜像备份工具。一款支持快速完全备份和增量备份的工具,支持本 地复制,远程同步等,类似于 scp 命令;rsync 命令在同步文件之前要先登录目标主机进行用户身份 认证,认证过后才能进行数据同步,身份认证方式取决于所使用的协议类型,rsync 一般使用两种协议进行数据同步:ssh 协议和 rsync 协议。

二、rsync 特性

  • 能更新整个目录树和文件系统
  • 有选择性的保留符号链接、硬链接、文件属性、权限、设备以及时间等
  • 对于安装来说,无任何特殊权限要求
  • 对于多个文件来说,文件传输效率高
  • 能用 ssh 或自定义端口作为传输入口端口

三、工作原理

既然涉及到数据同步,就要涉及到以哪一方为基准,哪一方为目标。例如,想让目标主机上的文件和本地文件保持同步,则是以本地文件为同步基准,将本地文件作为源文件推送到目标主机上。 rsync 在进行数据同步之前需要先进行用户身份验证,验证方式取决于使用的连接方式:

  • ssh 登录验证模式:使用 ssh 协议作为基础进行用户身份认证,然后进行数据同步。
  • rsync 登录验证模式:使用 rsync 协议进行用户身份认证(非系统用户),然后进行数据同步。

四、rsync 相关实验

1、 ssh 协议数据同步,将 NFS 服务器数据同步备份到 rsync 服务器
实现数据下载

格式:rsync -avz 服务器地址:/服务器目录/*  /本地目录
示例:rsync -avz root@100.100.100.103:/share/* .
-a:归档模式,递归并保留对象属性
-v:显示同步过程
-z:在传输文件时进行压缩
实现数据上传

格式:rsync -avz  /本地目录/*  服务器地址:/服务器目录
示例:rsync -avz ./* root@100.100.100.103:/share
注意:使用 root 用户进行实验可以,但生产环境中尽量使用单独创建的普通用户,减少权限溢出 创建用来做数据同步的用户,并给予用户对目录的相应权限,一般使用 ACL 设置权限
2、rsync 协议数据同步:将 NFS 服务器数据同步备份到 rsync 服务器
搭建rsync 服务

1)配置主配置文件

address = 100.100.100.103     #rsync 服务绑定 IP
port 873 #默认服务端口 873
log file = /var/log/rsyncd.log #日志文件位置
pid file = /var/run/rsyncd.pid #进程号文件位置
[web] #共享名:用来连接是写在 url 上的,切记
comment = rsync server #共享描述话语
path = /share #实际共享目录
read only = no #是否仅允许读取
dont compress = *.gz *.bz2 #哪些文件类型不进行压缩
auth users = love2 #登录用户名(非系统用户,需要自行创建)
secrets file = /etc/rsyncd_users.db

2)创建密码文件

vim /etc/rsyncd_users.db
love2:123456
chmod 600 /etc/rsyncd_users.db

3)启动服务

[root@centos share]# netstat -antp | grep :873
tcp 0 0 100.100.100.103:873 0.0.0.0:* LISTEN 2630/rsync

4)对 /share目录设立权限

setfacl -m u:nobody:rwx /share
实现下载
格式:rsync -avz rsync://用户名@服务器地址/共享模块名 /本地目录
示例:rsync -avz rsync://love2@100.100.100.103/web .
拓展:--delete:删除本地比服务器多出来的文件
rsync -avz --delete rsync://love2@100.100.100.103/web .
实现上传
格式:rsync -avz  /本地目录/*  rsync://用户名@服务器地址/共享模块名
示例:rsync -avz ./* rsync://love2@100.100.100.103/web
拓展:rsync 协议的免密码可以借助一个环境变量实现
# export RSYNC_PASSWORD=虚拟用户密码(客户端生成)
# export RSYNC_PASSWORD=123456

最新文章

  1. 复制远程共享文件夹内容到本地(python脚本实例)
  2. ZXingObjC 64位 集成到自己的项目中(xcode 6.4)
  3. 【hbase】——HBase 写优化之 BulkLoad 实现数据快速入库
  4. mac下用ruby安装sass && webstorm下给scss文件添加watch
  5. android_demo01
  6. mipi协议中文详解
  7. linux 解压,源码包
  8. 【Spark学习】Apache Spark项目简介
  9. NodeJs读取源代码使用的字符集
  10. bootstrap字体图标
  11. 错误日志类C#
  12. leetcode Generate Parentheses python
  13. hdu 4342 History repeat itself(数学题)
  14. (20)IO流之SequenceInputStream 序列流
  15. CentOS7的网卡启动不起来的问题
  16. MFC中小笔记
  17. Python第3次作业--李珠霞
  18. Windows安装zookeeper 单机版
  19. 手机端3d旋转木马效果+保存图片到本地
  20. Python3编写网络爬虫10-数据存储方式三-CSV文件存储

热门文章

  1. codeforces 1214
  2. 2019-8-15-win10-edge-打开闪退问题
  3. [转]关于SSH与SSM的组成及其区别
  4. window 系统下修改`CMD`的编码格式的方法,`CHCP` 的 使用
  5. Linux下tomcat启动成功但是Windows打不开tomcat网址
  6. CSS---cursor 鼠标指针光标样式(形状)
  7. CodeForces Goodbye 2017
  8. <% %>、<%! %>和<%= %>
  9. Canal常用配置
  10. Mybase desktop7.3破解