rsync介绍

rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份工具

在常驻模式(daemon mode)下,rsync默认监听TCP端口873,以原生rsync传输协议或者通过远程shell如RSH或者SSH提供文件。SSH模式下,rsync客户端运行程序必须同时在本地和远程机器上安装。

全量与增量

全量:将全部数据进行传输覆盖

增量:只传输差异部分的数据

rsync通过独特的“quick check”算法,实现增量数据传输

rsync的功能

类似与cp命令         --- (本地备份传输数据)

类似于scp命令          --- (远程备份传输数据)

类似于rm命令              --- (实现无差异同步备份)

类似于ls命令                --- (本地文件信息查看)

rsync的cp复制功能

[root@backup ~]# cp -a /etc/hosts /tmp/
[root@backup ~]# ls /tmp/hosts
/tmp/hosts
[root@backup ~]# rm -f /tmp/hosts
[root@backup ~]# rsync /etc/hosts /tmp/
[root@backup ~]# ls /tmp/hosts
/tmp/hosts

rsync的复制功能

rsync的scp远程复制功能

[root@backup ~]# scp -rp /etc/hosts 10.0.0.31:/tmp/
The authenticity of host '10.0.0.31 (10.0.0.31)' can't be established.
RSA key fingerprint is fc:::0e:a1:c9:fb:f6:d2::bf:::d2:c1:f5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.31' (RSA) to the list of known hosts.
root@10.0.0.31's password:
hosts
[root@nfs01 ~]# ll /tmp/hosts
-rw-r--r-- root root Oct : /tmp/hosts
[root@backup ~]# rsync -rp /etc/hosts 10.0.0.31:/tmp/
root@10.0.0.31's password:
[root@nfs01 ~]# ll /tmp/hosts
-rw-r--r-- root root Oct : /tmp/hosts

rsync的远程复制功能

rsync的rm删除功能

这个功能个人感觉比较鸡肋,很少有人使用

[root@backup tmp]# cp -a /tmp/* /test/
[root@backup tmp]# mkdir /null ##创建空目录,以空目录清空想删除的目录
[root@backup tmp]# rsync --delete -r /null/ /test/
[root@backup tmp]# ll /test/
total 0

rsync删除功能

rsync的ls查看功能

[root@backup tmp]# ls -l /etc/hosts
-rw-r--r--. root root Oct : /etc/hosts
[root@backup tmp]# rsync /etc/hosts
-rw-r--r-- // :: hosts

rsync的ls查看功能

rsync的特性

rsync有七个特性:

1. 支持拷贝普通文件与特殊文件如链接文件,设备等。

2. 可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。

    # tar zcvf backup_1.tar.gz  /opt/data  -exclude=ceshi   

    说明:在打包/opt/data时就排除了ceshi命名的目录和文件。

3. 可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变-p。

4. 可实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar -N)。

   # 将备份/home 目录自 -- 以来修改过的文件
# tar -N -- -zcvf /backups/inc-backup_$(date +%F).tar.gz /home
# 将备份 /home 目录昨天以来修改过的文件
# tar -N $(date -d yesterday "+%F") -zcvf /backups/inc-backup_$(date +%F).tar.gz /home
# 添加文件到已经打包的文件
# tar -rf all.tar *.gif
说明:这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。

5. 可以使用rcp,rsh,ssh等方式来配合进行隧道加密传输文件(rsync本身不对数据加密)

6. 可以通过socket(进程方式)传输文件和数据(服务端和客户端)*****。重点掌握

7. 支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像。

rsync的企业工作场景

同步网站内部人员数据信息(定时任务最小周期为一分钟)

同步网站用户人员的数据信息

rsync的参数说明

-v        详细模式输出,传输时显示信息
-z 传输时进行压缩,提高效率
-a 表示以递归方式传输文件,又包含了 rtopgDl参数
-r 递归
-t 保持文件时间信息
-o 保持文件属主信息
-p 保持文件权限
-g 保持文件属组信息
-D 设备文件信息
-l 保留软链接
-P 显示传输的进度信息
-e 指定用什么隧道
隧道模式传输:rsync -avz -e "ssh -p 22" /etc/hosts 172.16.1.31:/backup
--exclude 指定排除不需要的传输文件信息
--exclude-from=文件 文件所在的目录文件,即可实现排除多个文件
--bwlimit=速率 设置速率
--delete 无差异同步

rsync的参数

rsync软件工作方式

本地数据同步(类似与cp)

格式:  rsync [OPTION...] SRC... [DEST]

rsync               -- 数据同步命令

[OPTION...]      -- 命令参数信息

SRC                 -- 要同步的数据信息(文件或目录)

[DEST]             -- 将数据传输到什么位置(目标)

本地数据同步

实际操作演示

[root@backup ~]# rsync /etc/hosts /tmp/
[root@backup ~]# ls /tmp/hosts
/tmp/hosts

远程数据同步方式(类似scp)

此类型又叫做隧道传输

Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]

Pull(拉):
[USER@] -- 表示以什么用户身份传输数据信息
HOST: -- 远程主机信息(IP地址信息 主机名称信息)
SRC... -- 表示远端要拉过来的数据信息
[DEST] -- 拉到本地什么位置

远程同步:拉

Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

Push(推):
SRC... -- 本地要推过去的数据信息
[DEST] -- 推到什么位置
[USER@] -- 表示以什么用户身份传输数据信息
HOST: -- 远程主机信息(IP地址信息 主机名称信息)

远程同步:推

说明:需进行交互传输数据,如果想实现免交互传输数据,需借助ssh+key方式实现

实际操作演示

注意:不加以什么用户拉文件,默认是当前用户

[root@backup tmp]# rsync 10.0.0.31:/tmp/test.txt /tmp/
root@10.0.0.31's password:
[root@backup tmp]# ll
total
-rw-r--r-- root root Oct : hosts
-rw-r--r-- root root Oct : test.txt
-rw-r--r-- root root Oct : optimize-init_sys.sh
-rw-r--r-- root root Oct : sysctl.conf
-rw-------. root root Sep : yum.log

演示:拉取文件

[root@backup tmp]# rsync 10.0.0.31:/tmp/test.txt /tmp/
root@10.0.0.31's password:
[root@backup tmp]# ll
total
-rw-r--r-- root root Oct : hosts
-rw-r--r-- root root Oct : test.txt
-rw-r--r-- root root Oct : optimize-init_sys.sh
-rw-r--r-- root root Oct : sysctl.conf
-rw-------. root root Sep : yum.log

演示:推送文件

守护进程方式同步数据

此方式是rsync中最重要的部分

格式(拉):Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]

rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]

格式(推):Push: rsync [OPTION...] SRC... [USER@]HOST::DEST

rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

实际操作演示

配置rsync守护进程方式(需要有服务端与客户端)

配置rsync服务端

1. 查看rsync软件是否存在,一般来说系统是自带rsync的

[root@backup tmp]# rpm -qa |grep rsyn
rsync-3.0.6-12.el6.x86_64

2. 然后进行软件服务配置,编辑配置文件

对于配置文件的解释我写的过于简单,不懂的话可以看一下烂泥的介绍:https://www.cnblogs.com/ilanni/p/4225897.html

[root@backup tmp]# ll /etc/rsyncd.conf
ls: cannot access /etc/rsyncd.conf: No such file or directory
编辑配置文件:
[root@backup tmp]# vim /etc/rsyncd.conf
uid = rsync #用户 远端命令使用rsync访问共享目录
gid = rsync #用户组
use chroot = no #安全相关
max connections = #最大连接数
timeout = #超时时间(不进行备份多长时间断开)
pid file = /var/run/rsyncd.pid #进程对应进程号文件(存放服务运行时进程id号)
lock file = /var/run/rsync.lock #锁文件
log file = /var/log/rsyncd.log #日志文件,显示出错信息
模块信息:
[backup]
comment = "backup dir by oldboy"
path = /backup   #模块对应的位置(路径)
ignore errors #忽略错误程序
read only = false #是否只读(这里是假,表示能写入)
list = false #是否可以列表*
hosts allow = 172.16.1.0/ #准许访问rsync服务器客户范围(白名单)
hosts deny = 0.0.0.0/ #禁止访问rsync服务器客户范围(黑名单)
auth users = rsync_backup #不存在的用户,只用于认证
设置进行连接认证的密钥文件:
secrets file = /etc/rsync.password #认证时密钥文件

配置文件

3. 创建rsync服务管理用户

[root@backup tmp]# useradd -s /sbin/nologin -M rsync  #虚拟用户
[root@backup tmp]# id rsync
uid=(rsync) gid=(rsync) groups=(rsync)

创建管理用户

4. 创建数据备份存储目录

[root@backup tmp]# mkdir /backup
[root@backup tmp]# chown -R rsync.rsync /backup/ #一定要将文件属主和属组改成rsync用户

数据备份目录

5. 创建认证用户的密码文件

echo "rsync_backup:123456" >/etc/rsync.password
chmod /etc/rsync.password ##为了安全起见,把认证用户的密码文件权限改成600

创建认证密码文件

6. 启动rsync服务

[root@backup tmp]# rsync --daemon
[root@backup tmp]# ps -ef |grep rsync
root : ? :: rsync --daemon
root : pts/ :: grep --color=auto rsync
[root@backup tmp]# netstat -lntup |grep rsync ###看一下socket条目,是否有了
tcp 0.0.0.0: 0.0.0.0:* LISTEN /rsync
tcp ::: :::* LISTEN /rsync

启动rsync

配置rsync客户端

需要将数据进行备份的服务器就是客户端

1. 查看rsync软件是否存在

[root@web tmp]# rpm -qa rsync

rsync-3.0.6-12.el6.x86_64

2. 建立认证密码文件

echo "123456" >/etc/rsync.password
chmod 600 /etc/rsync.password

3. 传输测试

交互式:rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

非交互:rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

[root@nfs01 backup]# rsync -avz rsync_backup@172.16.1.41::backup/.txt .
Password:
receiving incremental file list
.txt sent bytes received bytes 62.00 bytes/sec
total size is speedup is 0.00
[root@nfs01 backup]# ll
total
-rw-r--r-- root root Oct : .txt
[root@nfs01 backup]#

拉取客户端文件

rsync报mkstemp ".hosts.EfhOg4" (in backup) failed: Permission denied (13)错误的原因

备份目录权限不正确导致的报错信息:

[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

Password:
sending incremental file list
hosts
rsync: mkstemp ".hosts.EfhOg4" (in backup) failed: Permission denied () sent bytes received bytes 64.86 bytes/sec
total size is speedup is 1.63
rsync error: some files/attrs were not transferred (see previous errors) (code ) at main.c() [sender=3.0.]

解决办法:修改权限,属主与属组

rsync重启方式

停止服务

kill  pid号
killall 进程名称
pkill 进程名称
说明:小心使用!!!!!

启动服务

rsync  --daemon

rsync --daemon启动扩展参数:

   --daemon           #←daemon表示以守护进程的方式启动rsync服务。
--address #←绑定指定IP地址提供服务。
--config=FILE #←更改配置文件路径,而不是默认的/etc/rsyncd.conf
--port=PORT #←更改其它端口提供服务,而不是缺省的873端口

--daemon --address演示

服务端:[root@backup backup]# rsync --daemon --address=172.16.1.41
客户端推送文件:
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@10.0.0.41::backup --password-file=/etc/rsync.password
rsync: failed to connect to 10.0.0.41: Connection refused ()
rsync error: error in socket IO (code ) at clientserver.c() [sender=3.0.]
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
hosts sent bytes received bytes 454.00 bytes/sec
total size is speedup is 1.63

--daemon --address 演示

--daemon -- config=FILE演示

服务端:
[root@backup backup]# cp /etc/rsyncd.conf /tmp
[root@backup backup]# rsync --daemon --config=/tmp/rsyncd.conf
客户端推送测试:
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
hosts sent bytes received bytes 454.00 bytes/sec
total size is speedup is 1.63

--daemon -- config=FILE演示

--daemon --port=PORT演示

服务端:
[root@backup backup]# rsync --daemon --port=
[root@backup backup]# netstat -lntup|grep rsync
tcp 0.0.0.0: 0.0.0.0:* LISTEN /rsync
tcp ::: :::* LISTEN /rsync
客户端:
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password ###没有加--port=端口
rsync: failed to connect to 172.16.1.41: Connection refused ()
rsync error: error in socket IO (code ) at clientserver.c() [sender=3.0.]
[root@nfs01 ~]# rsync -avz --port= /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password ###加了--port=端口
sending incremental file list
hosts sent bytes received bytes 151.33 bytes/sec
total size is speedup is 1.63

--daemon --port=PORT演示

rsync实现免密交互几种方式

--password-file=/etc/rsync.password 方式

[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
hosts sent bytes received bytes 454.00 bytes/sec
total size is speedup is 1.63

指定密码文件方式

定义全局变量信息实现免密交互

[root@nfs01 ~]# export RSYNC_PASSWORD=oldboy123
[root@nfs01 ~]# rsync -avz /etc/services rsync_backup01@172.16.1.41::backup
sending incremental file list sent bytes received bytes 74.00 bytes/sec
total size is speedup is 17324.86

定义全局变量方式

rsync守护进程的排除功能实践

1.--exclude=要配置的目录或文件名称

2.--exclude-from=要排除多个目录或文件汇总文件名称,利用排除文件排除,此方法是先将要排除的文件或目录名写到一个文件中,引用此文件

3.在配置文件中进行修改,指定要排除的信息,此方法是在rsync.conf配置文件中添加exclude = file 参数

rsync守护进程多模块功能配置

1. 编写配置文件创建多模块信息

    vim /etc/rsyncd.conf
[nfsdata01]
comment = "nfsdata dir by erlianzhang"
path = /nfsdata
[nfsbackup01]
comment = "nfsbackup dir by erlianzhang"
path = /nfsbackup

多模块

2. 创建多模块指定的存储目录,并进行授权

mkdir -p /{nfsdata,nfsbackup}
chown -R rsync.rsync /{nfsdata,nfsbackup}
第三步、利用rsync客户端进行测试
rsync -avz /etc/services rsync_backup01@172.16.1.41::nfsdata01 --password-file=/etc/rsync.password
rsync -avz /etc/services rsync_backup01@172.16.1.41::nfsbackup01 --password-file=/etc/rsync.password
说明:rsyncd.conf配置文件中,添加多模块信息,可以不用重启rsync服务,即时生效
全局变量参数针对所有模块生效;局部变量参数只对指定模块生效
read only参数默认配置为ture,即为只读模式
全局变量发生变化不用重启rsync服务,局部变量发生变化需要重启rsync

存储目录、授权

不当之处,还望海涵

Linux Rsync备份服务介绍及部署守护进程模式的更多相关文章

  1. Linux的httpd服务介绍和部署

    软件介绍 客户端代理软件     IE,firefox,chroome,opera      服务器端软件      httpd,Nginx,Tengine,ISS,Lighthttp       应 ...

  2. Rsync备份服务实战

    目录 Rsync备份服务实战 一.Rsync 二.rsync的应用场景 1.Rync的数据同步模式 2.rsync的三种模式 三.rsync配置服务端客户端 四.rsync实战 实战一 报错解决方法: ...

  3. day27 综合架构 rsync备份服务

    sync软件使用方法: rsync命令 1v4 a 本地备份数据 cp [root@nfs01 backup]# cp /etc/hosts /tmp [root@nfs01 backup]# ll ...

  4. 3、Rsync备份服务实战

    1.Rsync基本概述 rsync是一款开源的备份工具,可以在不同主机之间进行同步,可实现全量备份与增量备份,因此非常适合用于架构集中式备份或异地备份等应用. rsync官方地址:传送门http:// ...

  5. rsync 守护进程模式搭建 与常见报错

    守护进程模式搭建 1.环境准备 2.安装rsync(做备份的服务器都安装) [root@backup ~]# yum install -y rsync 3.服务端配置 [root@backup ~]# ...

  6. Kubernetes DaemonSet(部署守护进程)

    Kubernetes DaemonSet(部署守护进程) • 在每一个Node上运行一个Pod• 新加入的Node也同样会自动运行一个Pod 应用场景:Agent 官方文档:https://kuber ...

  7. Linux中rsync备份服务部署

    rsync介绍 rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份工具 在常驻模式(daemon mode)下,rsync默认监听TCP端口873,以原生rsync传输 ...

  8. Rsync备份服务部署

    1 Rsync服务器架构规划 在搭建服务之前需要做以下规划设计,其中包括:主机规划表.主机IP地址规划表.主机架构图.主机hosts解析以及linux主机基础优化等 1.1 主机规划表 服务器说明 数 ...

  9. 二.Rsync备份服务

    自己动手部署一遍 期中架构-第二章-备份服务笔记====================================================================== 01. 课 ...

随机推荐

  1. HDU1754 I hate it(线段树 单点修改)

    好久没打线段树,来一道练练手,但说句实话,I really hate it!!!!   很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感.  不管 ...

  2. C#使用Oracle.ManagedDataAccess.dll

    在刚接触C#的时候由于公司使用的就是Oracle数据库,那么C#怎么连接Oracle数据库就成了首要去掌握的知识点了.在那时没有ODP.NET,但visual studio却对Oralce数据库的调用 ...

  3. KODExplorer可道云-轻松搭建属于自己/团队的私有云网盘服务

    如今国内各大网盘关停的也快差不多,百度网盘限速严重.国外大牌的如 Dropbox 或 Google Drive又在长城之外,在各种VPN都被封禁的大背景下,科学上网也困难重重,麻烦到要死.那么,除了购 ...

  4. 全面理解 ASP.NET Core 依赖注入

    DI在.NET Core里面被提到了一个非常重要的位置, 这篇文章主要再给大家普及一下关于依赖注入的概念,身边有工作六七年的同事还个东西搞不清楚.另外再介绍一下.NET  Core的DI实现以及对实例 ...

  5. 在ASP.NET开发中一些单词的标准缩写

    有些词可能共用一些缩写.带星号的缩写或词来源于PeopleSoft标准. The following standard word abbreviations should be used in nam ...

  6. C#实现DirectShow技术开发准备

    DirectShow组件在“C:\WINDOWS\system32”目录下的Quartz.dll动态库中,要使C#代码引用COM对象和接口,必须将COM类型库转换为.NET框架元数据,从而有效地创建一 ...

  7. VIM于换行EOL的思考

    \n LF 0A 将当前光标切换到下一行(不一定行首)\r CR OD 将当前光标置于行首 在windows与unix系统中,unix将\n代表换行并置于行首,而windows保持原意.即unix:\ ...

  8. gcc调试 学习1

    gdb进入调试 b 6 在第6行设置断点 d 2 删除num为2的断点 info b 查看断点 run 运行 n 执行到断点1 s 如果下一条是函数就进入函数 n 继续执行 print i  输出i的 ...

  9. linux kernel态下使用NEON对算法进行加速

    ARM处理器从cortex系列开始集成NEON处理单元,该单元可以简单理解为协处理器,专门为矩阵运算等算法设计,特别适用于图像.视频.音频处理等场景,应用也很广泛. 本文先对NEON处理单元进行简要介 ...

  10. [转载] Mahout

    转载自http://hadoop.readthedocs.org/en/latest/Hadoop-Mahout.html# Mahout 12.1 简介 Mahout为推荐引擎提供了一些可扩展的机器 ...