文章目录

  • 1. RSYNC概述
  • 2. RSYNC传输模式
    • 2.1 本地传输
    • 2.2 远程传输
    • 2.3 守护进程
      • 2.3.1 RSYNC安装
      • 2.3.2 RSYNC配置
      • 2.3.3 RSYNC启动
  • 3. 客户端测试
    • 3.1 客户端测试
    • 3.2 无差异同步
    • 3.3 传输限速
  • 4. RSYNC参数详情
  • 5. 自我总结

1. RSYNC概述

rsync是一款开源的备份工具,
可以在不同主机之间进行同步(windows和Linux之间 Mac和Linux Linux和Linux)
可实现全量备份与增量备份,因此非常适合用于架构集中式备份或异地备份等应用。

  • 为什么要做备份

    • 数据非常的重要
    • 保证数据不丢失
    • 便于快速的恢复
  • 能不能不做备份

    • 可以,对于不是特别重要的数据可以不考虑
  • 备份怎么做

    • scp 网络之间的拷贝,全量拷贝的方式 (ssh协议)
    • rsync 远程同步(增量)
  • 备份的方式

    • 完全备份,每次都进行全部备份 (效率低下, 占用空间)
    • 增量备份,仅备份客户端与服务端差异的部分 (提高备份效率,节省空间, 适合异地备份 )

2. RSYNC传输模式

2.1 本地传输

类似于使用cp命令

语法格式: 命令 选项 源文件 目标文件

举个例子: 将本地/root/1.txt传到/opt下

命令: rsync -avz /root/1.txt /opt/

2.2 远程传输

通过网络传输 a–>b

语法格式:
推送 : Push: rsync [OPTION…] SRC… [USER@]HOST:DEST
拉取 : Pull: rsync [OPTION…] [USER@]HOST:SRC… [DEST]

举个例子:
(1)推送方式: 将本地的/etc/passwd文件,推送到172.16.1.41服务器的tmp目录下,使用的是41的root用户身份
命令: rsync -avz /etc/passwd root@172.16.1.41:/tmp

(2)拉取方式: 本地nfs服务器下载172.16.1.41服务器/etc/services这个文件,至本地当前目录下,使用的是41的系统用户root身份
命令: rsync -avz root@172.16.1.41:/etc/services ./

2.3 守护进程

运行一个服务一直在后台,充当备份服务器。

2.3.1 RSYNC安装

yum install rsync -y

2.3.2 RSYNC配置

(1)修改配置文件

[root@backup ~]# cat /etc/rsyncd.conf
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]
comment = welcome to oldboyedu backup!
path = /backup

配置文件详解

[root@backup ~]# vim /etc/rsyncd.conf
uid = rsync                      # 运行进程的用户
gid = rsync                      # 运行进程的用户组
port = 873                       # 监听端口
fake super = yes                 # 无需让rsync以root身份运行,允许接收文件的完整属性
use chroot = no                  # 禁锢推送的数据至某个目录, 不允许跳出该目录
max connections = 200            # 最大连接数
timeout = 600                    # 超时时间
ignore errors                    # 忽略错误信息
read only = false                # 对备份数据可读写
list = false                     # 不允许查看模块信息
auth users = rsync_backup        # 定义虚拟用户,作为连接认证用户
secrets file = /etc/rsync.passwd # 定义rsync服务用户连接认证密码文件路径[backup]                # 定义模块信息
comment = commit        # 模块注释信息
path = /backup          # 定义接收备份数据目录

(2)创建rsync进程启动时需要使用的用户:

[root@backup ~]# useradd rsync -M -s /sbin/nologin
[root@backup ~]# id rsync
uid=1000(rsync) gid=1000(rsync) groups=1000(rsync)  

(3)创建密码文件,在密码文件中写入对应的虚拟用户以及虚拟用户的密码,/etc/rsync.passwd—》rsync虚拟用户以及rsync虚拟用户的密码

[root@backup ~]# echo "rsync_backup:123456" > /etc/rsync.passwd
[root@backup ~]# chmod 600 /etc/rsync.passwd

(4)创建存储备份数据的目录,并进行授权

[root@backup ~]# mkdir /backup
[root@backup ~]# chown -R rsync.rsync /backup/

2.3.3 RSYNC启动

启动rsync服务并加入开机自启动,并检测rsync端口号873

[root@backup ~]# systemctl start rsyncd.service
[root@backup ~]# systemctl enable rsyncd
[root@backup ~]# netstat -lntp

3. 客户端测试

3.1 客户端测试

命令语法格式:

        下载 Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]上传 Push: rsync [OPTION...] SRC... [USER@]HOST::DEST

客户端推送: 把客户端中的/etc目录推送到服务端的backup模块下的/backup目录 ((注意加/ 和不加/的区别))

 [root@nfs ~]# rsync -avz /etc/ rsync_backup@172.16.1.41::backup   #推送/etc/下面的内容[root@nfs ~]# rsync -avz /etc rsync_backup@172.16.1.41::backup   #推送/etc这个目录

客户端拉取: 拉取服务端172.16.1.41的backup目录下面的所有内容至本地的 /opt目录

rsync -avz rsync_backup@172.16.1.41::backup /opt

注意事项:

 rsync_backup:客户端通过该虚拟用户连接rsync服务是一个虚拟用户,由服务端的配置文件中定义【auth users】通常存放在指定的一个文件中,该文件也是有服务端配置文件定义【secrets file】rsync:【模块对应的目录,必须授权为配置文件中定义的uid和gid的用户】用于运行rsync服务时需要使用到的系统用户用于将接收到的数据以自己的身份写入到对应的目录中

自我总结:

(1)这个rsync_backup这个用户是存在这个服务中的,没有在/etc/passwd中,就只是用来密码验证的。
(2)rsync 必须是手动创建的,这个用户是由是用来用来接收客户端推送过来的数据,然后写入/backup/目录的

3.2 无差异同步

实现客户端与服务端无差异同步:–delete

#推送方式实现无差异,以客户端为准,客户端有什么服务端就有什么
[root@nfs ~]# rsync -avz --delete /root rsync_backup@172.16.1.41::backup      #拉取方式实现无差异,以服务端为准,服务端有什么客户端就有什么
[root@nfs ~]# rsync -avz --delete rsync_backup@172.16.1.41::backup /opt/

3.3 传输限速

(1)生成一个大文件,进行传送测试:

[root@nfs ~]# dd if=/dev/zero of=./size.disk bs=1M count=500 生成大文件

(2)限制传输的速率为1MB :

[root@nfs ~]# rsync -avzP --bwlimit=1 ./size.disk rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
size.disk118,358,016  22%    1.01MB/s    0:06:33

(3)取消每次传输时需要输入密码【客户端才会配置】

方式一:

[root@nfs ~]# echo "123456" > /etc/rsync.pass
[root@nfs ~]# chmod 600 /etc/rsync.pass                    上该文件找123456
[root@nfs ~]# rsync -avzP --bwlimit=1 ./size.disk rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.pass

方式二:

[root@nfs ~]# export RSYNC_PASSWORD=123456
[root@nfs ~]# rsync -avzP ./size.disk rsync_backup@172.16.1.41::backup

4. RSYNC参数详情

rsync参数:-avz
-a           #归档模式传输, 等于-tropgDl
-v           #详细模式输出, 打印速率, 文件数量等
-z           #传输时进行压缩以提高效率
-r           #递归传输目录及子目录,即目录下得所有目录都同样传输。
-t           #保持文件时间信息
-o           #保持文件属主信息
-p           #保持文件权限
-g           #保持文件属组信息
-l           #保留软连接
-P           #显示同步的过程及传输时的进度等信息
-D           #保持设备文件信息
-L           #保留软连接指向的目标文件
-e           #使用的信道协议,指定替代rsh的shell程序  ssh
--exclude=PATTERN   #指定排除不需要传输的文件模式
--exclude-from=file #文件名所在的目录文件
--bwlimit=100       #限速传输                         ------常用
--partial           #断点续传
--delete            #让目标目录和源目录数据保持一致  ----常用

5. 自我总结

(1) 权限问题

uid = rsync、gid = rsync都改为www,这个uid和gid只是名字不同而已,只要是/etc/passwd中存在一个名字叫www用户即可,为了和后面的的nfs用户一直,把uid和gid都改为666.这样可以防止权限不足。在生产中也是统一一个用户。

(2)知识点梳理

rsync 远程同步
rsync能实现远程备份rsync远程传输方式和守护进程方式区别?临时周期性任务保证客户端与服务端数据一致?--delete参数限制推送传输的速率?--bwlimit 限速-P  显示速率rsync守护进程配置?安装配置启动rsync进程运行的用户和rsync_backup虚拟用户区别?rsync_backup:用于提供给客户端远程连接,这个虚拟用户在/etc/passwd中不存在,这个是服务自带的,用于验证的rsync:是否往本地服务器写入客户端推送过来的数据,这个用户需要自己创建,再/etc/passwd中存在[root@nfs ~]# telnet 172.16.1.41 873
Trying 172.16.1.41...
telnet: connect to address 172.16.1.41: Connection refused      #端口不可达[root@nfs ~]# telnet 172.16.1.41 873
Trying 172.16.1.41...
telnet: connect to address 172.16.1.41: No route to host        #防火墙拦截#当rsync服务端没有创建数据存放的目录时,则会出现如下提示
[root@nfs ~]# sh /server/scripts/client_push_data.sh
@ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]2019/01/07 08:57:33 [1272] rsync: chdir /backup failed
: No such file or directory (2)#用户密码不对,或权限不是600
[root@nfs ~]# sh /server/scripts/client_push_data.sh
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]

远程同步软件rsync(一)相关推荐

  1. 远程同步工具 ---- rsync

    远程同步工具 ---- rsync 前言: ​ rsync(Remote Sync)是linux系统下的数据镜像备份工具,使用快速增量备份工具rsync可以远程同步,支持本地复制或其他ssh.rsyn ...

  2. linux异地文件同步软件,rsync完成异地文件的同步

    1.rsync使用deamon非rsync走ssh通道模式,实现快速自动化将备份数据推给备份服务器 2.备份数据使用单独的用户组(如chenwm)进行存取 3.备份端机器将rsync存取权限的密码写入 ...

  3. rsync 远程同步部署 上行下行同步

    rsync远程同步 一.rsync (Remote Sync,远程同步) 二.部署rsync源服务器 三.发起端 四.发起端配置 rsync+inotify 一.rsync (Remote Sync, ...

  4. 烂泥:linux文件同步之rsync学习(一)

    这几天刚好有空就打算开始学习linux下的文件同步软件rsync,在学习rsync时,我们可以分以下几个步骤进行: 1. rsync是什么 2. rsync的工作原理 3. rsync优点 4. rs ...

  5. rsync远程同步的基本配置与使用

    rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份,镜像服务器等应用. rsync的官 ...

  6. rsync+inotify远程同步

    rsync+inotify远程同步 一.rsync 1.rsync服务器 2.同步方式 3.rsync命令 4.配置源的两种表示方法 5.实验:本地复制(下行复制) 二.inotify 1.简介 2. ...

  7. linux rsync 远程同步

    rsync(Remote Sync) 是一个Unix/linux系统下的文件同步和传输工具.Rsync通过"rsync算法"提供了一个客户机和远程文件服务器的文件同步的快速方法. ...

  8. rsync远程同步+inotify监控

    rsync远程同步+inotify 一.基本理论概述 1.1 前言概述 1.2 rsync服务器概述 1.3 rsync同步方式 二.实验操作 2.1 rsync本地复制 2.2 rsync服务器和客 ...

  9. 快速入门rsync远程同步

    文章目录 一.rsync同步简介 二.配置rsync源服务器 三.rsync远程同步实验 3.1实验环境 3.2实验步骤 四.rsync实时同步 4.1为什么要实时同步 4.2关于inotify 4. ...

最新文章

  1. ARKit 与 ARCore比对(三)
  2. Your Podfile has had smart quotes sanitised
  3. 代码片段管理器——SnippetsLab
  4. CSDN:解决粉丝网友集中问题留言处,把你所有的问题在留言处留言,我会一一回答
  5. LoadRunner 脚本语言认识
  6. 董长青(1980-),男,北京卡达克数据技术中心软件业务本部高级工程师,主要研究方向为大数据、车联网。...
  7. python 装饰器 二
  8. linux系统开远程桌面,Linux 系统开启远程桌面的方法
  9. 考研数学 妙题摘记(3) (求数列和的极限,附定积分定义法)
  10. 如何安装Win10/Ubuntu双系统
  11. css 实现一个尖角_css实现气泡的小尖角效果
  12. 九阴真经战无不胜服务器位置,九阴真经新服“战无不胜”
  13. linux脚本编程for,谢烟客---------Linux之bash脚本编程---if补充和for循环
  14. 实现安全登录的两种方法
  15. 7-87 时间换算 (15 分)
  16. hashMap1.7头插法及扩容
  17. 苹果鼠标右键怎么按_Mac触控板常用的手势操作,让你告别Windows鼠标!
  18. 李航老师《统计学习方法》第二版第三章课后题答案
  19. 目标检测 Chapter1 传统目标检测方法
  20. 学校作业-Usaco DP水题

热门文章

  1. 晶振与晶体的参数详解
  2. c语言功率算电量,电功率你理解透了吗?怎么算功率因数?1度电是多少?
  3. Java SE MyBatis框架(详解)
  4. 存储和虚拟化服务器的对接,储存虚拟化
  5. 学习PCB之pcb器件的绘制
  6. bootstrap table表头错位,火狐浏览器下滚动条挤像素问题解决方案。
  7. Permission denied: user=dr.who, access=READ_EXECUTE, inode=/tmp:root:supergroup:drwx------
  8. matlab只读改为可修改,matlab – 获取绘图的只读属性名称列表
  9. context.Context
  10. HP WINDOWS XP PRO SP3 OEM 中文简体完整版