目录

  • reync备份服务实战
  • 1.reync基础概述
  • 1.什么是备份
  • 2.为什么备份
  • 3.能不能不做备份
  • 4.rsync模式
  • 5.rsync数据传输方式
  • 推送:
  • 拉取:
  • 安装配置服务
  • 安装
  • 配置(让软件按照我们所设定预期去运行)
  • 3.根据配置文件,初始化操作:
  • 启动
  • 测试 (客户端使用推送或拉取你的方式)
  • rsync选项参数:
  • 1.--delete
  • 2.--bwlimit限速 按照MB
  • 2.客户端非交互传输数据至服务端。

reync备份服务实战

1.reync基础概述

角色 外网IP(NAT) 内网IP(LAN) 主机名
NFS eth0:10.0.0.11 eth1:172.16.1.11 nfs01
Rsync eth0:10.0.0.12 eth1:172.16.1.12 backup

1.什么是备份

备份就是把文件复制一份存起来(增加一个副本)

2.为什么备份

数据非常重要

保证数据不丢失

便于快速的恢复

3.能不能不做备份

可以,对于不是特别重要的数据可以不考虑

完全备份 占用空间 效率不高

增量备份 节省空间 效率高

备份工具:
本地备份:cp    将什么数据拷贝到那个目录下 (不可以离开服务器本身)

远程备份:scp      基于ssh协议基础实现的更安全的cp ,可以实现跨主机

         rsync    远程同步工具,实现 “ 不同操作系统 ” 之间数据同步

     Linux ---》 Linux   Linux ---Windows   Linux --- MacOS

4.rsync模式

1.基于命令使用,就好像在使用cp命令

2.基于服务的方式启动,就需要暴露端口,让程序持续运行

C/S client/Server 结构

5.rsync数据传输方式

本地传输:   和cp差不多

Local:  rsync [OPTION...] SRC... [DEST]

nginrsync: 		#命令

[OPTION...]		#选项

SRC...			#源

[DEST]			#目标

==总结==:使用rsync命令将什么文件拷贝到什么路径下

rsync 		OPTION  		SRC       DEST

rsync -avz /etc/hosts/tmp

cp - a /etc/hosts /tmp
rsync -avz /etc/hosts /tmp			# 第一次全量

rsync -avz /etc/hosts /tmp			# 第二次增量,由于没有变化,所以没有更新操作

echo "##" >> /etc/hosts				# 将文件产生变化

rsync -avz /etc/hosts /tmp			# 再次执行,会同步发生变化的内容
push    #推送
Pull    #拉取

远程传输:A-B 可以在机器之间互相传输数据(推送和拉取) --》 依赖ssh协议,系统root密码。

推送:

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

文件: 将11服务器的/etc/hosts文件,推送到12服务器的/tmp,使用root用户

[root@rui ~]# touch /opt/1.txt
[root@rui ~]# rsync -avz /opt/1.txt  root@172.16.1.12:/tmp
root@172.16.1.12's password: 
sending incremental file list
1.txt

sent 84 bytes  received 35 bytes  11.33 bytes/sec
total size is 0  speedup is 0.00

目录: 将11服务器的/opt目录以及目录下的所有文件都推送到12服务器的/tmp目录,使用的是12服务器的root用户身份

[root@rui ~]# rsync -avz /tmp root@172.16.1.12:/opt
root@172.16.1.12's password: 
sending incremental file list
tmp/
tmp/hosts
tmp/ks-script-AShK6w
tmp/yum.log
tmp/.ICE-unix/
tmp/.Test-unix/
tmp/.X11-unix/
tmp/.XIM-unix/
tmp/.font-unix/

sent 1,385 bytes  received 133 bytes  433.71 bytes/sec
total size is 997  speedup is 0.66

拉取:

rsync OPTION...HOST:SRC... [DEST]

文件:拉取31服务器/tmp/yum.log文件,至41本地的/opt目录

[root@rui ~]# rsync -avz root@172.16.1.12:/tmp/yum.log /opt/
root@172.16.1.12's password: 
receiving incremental file list
yum.log

sent 43 bytes  received 85 bytes  36.57 bytes/sec
total size is 0  speedup is0.00


 目录:  目录:拉取31服务器/tmp目录以及目录下的所有内容,到41服务器的/opt目录下 

rsync -avz root@172.16.1.12:/tmp /opt/
root@172.16.1.12's password: 
receiving incremental file list
tmp/
tmp/1.txt
tmp/ks-script-AShK6w
tmp/yum.log
tmp/.ICE-unix/
tmp/.Test-unix/
tmp/.X11-unix/
tmp/.XIM-unix/
tmp/.font-unix/
tmp/opt/
tmp/systemd-private-2ba621ac312148a991cd97e2a142d6f9-chronyd.service-MwYxU5/
tmp/systemd-private-2ba621ac312148a991cd97e2a142d6f9-chronyd.service-MwYxU5/tmp/
tmp/systemd-private-fa9eb8f36c154618ba1a6cabea720e3f-chronyd.service-w8wcz7/
tmp/systemd-private-fa9eb8f36c154618ba1a6cabea720e3f-chronyd.service-w8wcz7/tmp/
tmp/vmware-root_1077-4256545038/
tmp/vmware-root_951-4013330126/
tmp/vmware-root_955-3988228421/
tmp/vmware-root_967-4248221830/

sent 145 bytes  received 1,346 bytes  596.40 bytes/sec
total size is 836  speedup is 0.56

守护进程:(不使用系统的真实用户,可以自行diy一个用户。)

Access via rsync daemon:

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

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

服务端:10.0.0.11 客户端:10.0.0.12

安装配置服务

安装

[root@rui ~]# yum -y install rsync  #安装rsync

配置(让软件按照我们所设定预期去运行)

[root@rui ~]# rpm -qc rsync    #查看rsync配置文件的位置
    /etc/rsyncd.conf
    /etc/sysconfig/rsyncd
    [root@rui ~]# cat /etc/rsyncd.conf    #看一下他的配置文件内容
    [root@rui ~]# > /etc/rsyncd.conf   # 清除rsync配置文件原有内容
    [root@backup ~]# vim /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 backup serve
    path = /backup



     2.配置文件注释:

      uid = rsync		# rsync进程是使用rsync用户身份运行

      gid = rsync		# 

      port = 873		# 默认监听的端口是873 

      fake super = yes	# 不用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	# 存储假用户的密码   username:password

      log file = /var/log/rsyncd.log		# 日志

      #####################################

      [backup]				# 模块名称

      comment = welcome to backup server	# 描述的意思

      path = /backup				# 模块名称对应的具体目录

3.根据配置文件,初始化操作:

3.1 创建rsync用户(主要是rsync进程运行时需要使用的身份)
  [root@rui ~]# useradd rsync -r -M
  3.2 创建密码文件/etc/rsync.passwd  密码文件中要填写username:password 用户要与配置文件中定义的一致 
  [root@rui ~]# echo "rsync_backup:1" > /etc/rsync.passwd   #自定义用户并设置密码“1”。
  [root@rui ~]# chmod 600 /etc/rsync.passwd #给文件600权限 默认644权限,其他用户对它有执行权限
  [root@rui ~]# cat /etc/rsync.passwd  #查看文件内容
  rsync_backup:1
  
  3.3创建存储数据目录:/backup

[root@rui ~]# mkdir /backup   #创建/backup
[root@rui ~]# chown -R rsync.rsync /backup/  #给他属主属组到rsync

启动

[root@rui ~]# systemctl restart rsyncd  #启动rsyncfuwu
[root@rui ~]# systemctl enable rsyncd   #开机自动启动rsync服务
[root@rui ~]# netstat -lntp  #列出所有tcp和udp端口 (还有别的,我只复制了rsync的)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Addresstcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      19399/rsync   
tcp6       0      0 :::873                  :::*                    LISTEN      19399/rsync

测试 (客户端使用推送或拉取你的方式)

10.0.0.12模拟客户端进行推送测试:

[root@rui tmp]# rsync -avz rsync_backup@10.0.0.11::backup /mnt/    #把客户端的/tmp目录推送到服务端

rsync选项参数:

-a	         #归档模式传输, 等于-tropgDl

-v	         #详细模式输出, 打印速率, 文件数量等

-z	         #传输时进行压缩以提高效率

-r	         #递归传输目录及子目录,即目录下得所有目录都同样传输。

-t	         #保持文件时间信息

-o	         #保持文件属主信息

-p	         #保持文件权限

-g	         #保持文件属组信息

-l	         #保留软连接

-P	         #显示同步的过程及传输时的进度等信息

-D	         #保持设备文件信息

-L           #保留软连接指向的目标文件

-e	         #使用的信道协议,指定替代rsh的shell程序

--exclude=PATTERN   #指定排除不需要传输的文件模式

--exclude-from=file #文件名所在的目录文件

--bwlimit=100       #限速传输

--delete            #让目标目录和源目录数据保持一致

1.--delete

推送:客户端有100文件,服务端有200文件,服务端最后就剩下客户端的100个文件,高度与客户端一致

[root@nfs ~]# touch /mnt/file-{1..10}
    [root@nfs ~]# rsync -avz /mnt/ rsync_backup@172.16.1.41::backup
    [root@nfs ~]# rsync -avz /etc/ rsync_backup@172.16.1.41::backup
    [root@nfs ~]# rsync -avz --delete /mnt/ rsync_backup@172.16.1.41::backup
拉取: 客户端有 100文件,服务端游200文件,  客户端最终剩下200个服务端的文件,与服务端保持一致、
    [root@nfs ~]# cp /etc/* /mnt/
    [root@nfs ~]# rsync -avz --delete rsync_backup@172.16.1.41::backup /mnt/

2.--bwlimit限速 按照MB

[root@nfs ~]# dd if=/dev/zero of=/opt/bigdata bs=1M count=500

	[root@nfs ~]# du -sh /opt/bigdata 

	[root@nfs ~]# rsync -avzP /opt/bigdata rsync_backup@172.16.1.41::backup
开启限速:
[root@backup ~]# rm -f /backup/bigdata
     	[root@nfs ~]# rsync -avzP --bwlimit 10  /opt/bigdata rsync_backup@172.16.1.41::backup
     	Password: 
     	sending incremental file list
     	bigdata
     	262,078,464  49%    9.89MB/s    0:00:25

2.客户端非交互传输数据至服务端。

2.1)	RSYNC_PASSWORD 		
		[root@nfs ~]# export RSYNC_PASSWORD=1
		[root@nfs ~]# rsync -avzP --bwlimit 10  /opt/bigdata rsync_backup@172.16.1.41::backup

      2.2)  --passwd-file=/path/password  ( 文件中仅可以存储客户端密码。多一点都不行。)   只需要在客户端创建该文件即可
    	[root@nfs ~]# echo "1" > /etc/rsync.pass
    	[root@nfs ~]# chmod 600 /etc/rsync.pass
    	[root@nfs ~]# rsync -avzP --bwlimit 10  /opt/bigdata rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.pass
            @ERROR: auth failed on module backup		# 密码文件权限为600
            rsync: mkstemp ".hosts.K9azMA" (in backup) failed: Permission denied (13)

你看我敲命令,你羡慕吗?