运维人员基本职责 数据不能丢失(运维最重要的职责) 7*24小时提供服务,网站不宕机 提升用户体验

rsync备份服务介绍

Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具
rsync — a fast, versatile, remote (and local) file-copying tool
来自:http://www.samba.org/ftp/rsync/rsync.html
通过:man rsync
全量复制:是将所有备份数据都同步一遍
增量复制:只将变化的新增的数据,进行备份同步

rsync命令具有4种功能(1v4)

1、shell模式,也称作本地模式 2、远程shell模式,此时可以利用ssh协议承载其数据传输过程 3、列表模式,其工作方式与ls相似,仅列出源的内容:-nv 4、服务器模式,此时,rsync可以工作在守护进程,能够接收客 户端的数据请求;在使用时,可以在客户端使用rsync命令把文件发送 到守护进程,也可以像服务器请求获取文件

1.2.1 具有本地数据备份复制功能(类似于cp命令) 本地文件数据备份 [root@backup ~]# \cp /etc/hosts /tmp/ [root@backup ~]# ll /tmp/hosts -rw-r--r-- 1 root root 371 Nov 28 09:05 /tmp/hosts

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

、 [root@backup ~]# ll /tmp/hosts -rw-r--r-- 1 root root 371 Nov 28 09:07 /tmp/hosts

本地目录数据备份
[root@backup ~]# mkdir /oldboy_dir/
[root@backup ~]# touch /oldboy_dir/{a..e}
[root@backup ~]# tree /oldboy_dir/
/oldboy_dir/
├── a
├── b
├── c
├── d
└── e

[root@backup ~]# cp -r /oldboy_dir/ /tmp/
[root@backup ~]# ll /tmp/oldboy_dir/ -d
drwxr-xr-x 2 root root 4096 Nov 28 09:10 /tmp/oldboy_dir/
[root@backup ~]# tree /tmp/oldboy_dir/
/tmp/oldboy_dir/
├── a
├── b
├── c
├── d
└── e

0 directories, 5 files

[root@backup ~]# rsync -r /oldboy_dir/ /tmp/
[root@backup ~]# ll /tmp/oldboy_dir/ -d
ls: cannot access /tmp/oldboy_dir/: No such file or directory
说明:备份目录下面的数据内容备份过去了,但目录本身没有备份

[root@backup ~]# rsync -r /oldboy_dir /tmp/
[root@backup ~]# ll /tmp/oldboy_dir/ -d
drwxr-xr-x 2 root root 4096 Nov 28 09:13 /tmp/oldboy_dir/
[root@backup ~]# tree /tmp/oldboy_dir/
/tmp/oldboy_dir/
├── a
├── b
├── c
├── d
└── e

0 directories, 5 files

总结说明:利用rsync命令在备份数据目录时
备份的数据目录后面有    /  类似这样形式/oldboy_dir/,表示只将oldboy_dir目录下面的内容进行复制
备份的数据目录后面没有  /  类似这样形式/oldboy_dir,  表示将oldboy_dir目录下面的内容以及目录本身进行复制

1.2.2 具有远程数据备份复制功能(类似于scp命令) [root@backup ~]# scp /etc/hosts 172.16.1.31:/tmp/ root@172.16.1.31's password: hosts 100% 371 0.4KB/s 00:00

[root@backup ~]# scp -r /oldboy_dir/ 172.16.1.31:/tmp/
root@172.16.1.31's password: 
Permission denied, please try again.
root@172.16.1.31's password: 
c                            100%    0     0.0KB/s   00:00    
d                            100%    0     0.0KB/s   00:00    
e                            100%    0     0.0KB/s   00:00    
b                            100%    0     0.0KB/s   00:00    
a                            100%    0     0.0KB/s   00:00
说明:scp命令属于全量复制

[root@backup ~]# rsync /etc/hosts 172.16.1.31:/tmp
root@172.16.1.31's password: 

[root@backup ~]# rsync -rv /oldboy_dir 172.16.1.31:/tmp/
root@172.16.1.31's password: 
sending incremental file list
oldboy_dir/
oldboy_dir/a
oldboy_dir/b
oldboy_dir/c
oldboy_dir/d
oldboy_dir/e
说明:rsync命令属于增量复制

1.2.3 数据删除功能(类似于rm命令) [root@backup tmp]# mkdir /null [root@backup tmp]# rsync -rv --delete /null/ /tmp/oldboy_dir/ sending incremental file list deleting e deleting d deleting c deleting b deleting a

sent 24 bytes  received 12 bytes  72.00 bytes/sec
total size is 0  speedup is 0.00
[root@backup tmp]# tree /tmp/oldboy_dir/
/tmp/oldboy_dir/

0 directories, 0 files
[root@backup tmp]# 
说明:rsync命令清空目录内容或者清空文件内容效率比rm命令要高

1.2.4 可以进行数据信息查看(类似于ls命令) [root@backup tmp]# rsync /etc/hosts -rw-r--r-- 371 2017/11/27 12:15:46 hosts

rsync软件实现增量复制原理

Rsync通过其独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或目录,
当然也可根据权限,属主等属性的变化同步

rsync软件特性总结

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

 2) 可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。 #tar zcvf backup_1.tar.gz /opt/data -exclude=oldboy
说明:在打包/opt/data时就排除了oldboy命名的目录和文件。  3) 可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变-p。  4) 可实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar -N)。 # 将备份/home 目录自 2008-01-29 以来修改过的文件 # tar -N 2008-01-29 -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) 支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像。 1.5 rsync软件工作原理

rsync软件工作方式

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

Access via remote shell:
  Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
  Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

Access via rsync daemon:
  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

1.6.1 本地数据备份功能(类似于cp) Local: rsync [OPTION...] SRC... [DEST] rsync ---数据备份命令 [OPTION...] ---命令相关参数 SRC... ---要进行本地备份的数据信息 [DEST] ---把数据备份到本地什么位置

1.6.2 远程数据备份功能 Access via remote shell: Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

  拉过程语法解释说明
  Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
  rsync         ---数据备份命令
  [OPTION...]   ---命令相关参数	  
  [USER@]       ---以什么用户身份进行数据信息拉取
  HOST:	        ---远程主机地址信息,或者可以写为远程主机名称信息  
  SRC...        ---要进行远程传输备份的远程数据信息
  [DEST]        ---把远程数据备份到本地什么位置
  
  Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
  rsync         ---数据备份命令
  [OPTION...]   ---命令相关参数	  
  [USER@]       ---以什么用户身份进行数据信息推送
  HOST:	        ---远程主机地址信息,或者可以写为远程主机名称信息  
  SRC...        ---要进行远程传输备份的本地数据信息
  [DEST]        ---把本地数据备份到远程什么位置

1.6.3 守护进程方式进行数据备份传输(服务端和客户端) Access via rsync daemon: 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

  Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
  rsync         ---数据备份命令
  [OPTION...]   ---命令相关参数	
  [USER@]       ---远程连接认证用户身份信息,认证用户为一个虚拟用户,不需要进行创建
  HOST::	    ---远程主机地址信息,或者可以写为远程主机名称信息 
  SRC...        ---要进行远程传输备份的远程模块信息
  [DEST]        ---把远程数据备份到本地什么位置
  
  Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
  rsync         ---数据备份命令
  [OPTION...]   ---命令相关参数	
  [USER@]       ---远程连接认证用户身份信息,认证用户为一个虚拟用户,不需要进行创建
  HOST::	    ---远程主机地址信息,或者可以写为远程主机名称信息 
  SRC...        ---本地要进行远程传输复制的文件或目录信息
  DEST          ---要进行远程传输备份的远程模块信息

rsync软件在企业中做数据备份的方式

1) 定时同步+rsync进行数据备份:一般是网站内部人员存储的数据信息,用定时同步 2) 实时同步+rsync进行数据备份:一般是网站外部人员存储的数据信息,用实时同步 会有全网数据备份项目说明

rsync守护进程模式部署

1.8.1 rsync守护进程服务端部署 第一个里程碑:检查部署软件服务是否存在 [root@backup /]# rpm -qa|grep rsync rsync-3.0.6-12.el6.x86_64

第二个里程碑:进行rsync软件配置 vim /etc/rsyncd.conf --- 此配置文件默认不存在,需要创建生成 #rsync_config #created by HQ at 2017 ##rsyncd.conf start##

uid = rsync gid = rsync use chroot = no max connections = 200 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log ignore errors read only = false list = false hosts allow = 172.16.1.0/24 hosts deny = 0.0.0.0/32 auth users = rsync_backup secrets file = /etc/rsync.password [backup] comment = "backup dir by oldboy" path = /backup

第三个里程碑:创建rsync备份目录管理用户 [root@backup /]# useradd -s /sbin/nologin -M rsync [root@backup /]# id rsync uid=1000(rsync) gid=1001(rsync) groups=1001(rsync)

第四个里程碑:创建rsync服务端备份数据目录 [root@backup /]# mkdir /backup [root@backup /]# chown -R rsync.rsync /backup/ [root@backup /]# ll -d /backup/ drwxr-xr-x 2 rsync rsync 4096 Nov 28 11:22 /backup/

第五个里程碑:创建用户认证文件 [root@backup /]# echo 'rsync_backup:oldboy123' >/etc/rsync.passsword [root@backup /]# chmod 600 /etc/rsync.passsword [root@backup /]# cat /etc/rsync.passsword rsync_backup:oldboy123 [root@backup /]# ll /etc/rsync.passsword -rw------- 1 root root 23 Nov 28 11:24 /etc/rsync.passsword

第六个里程碑:启动rsync服务,启动守护进程 [root@backup /]# rsync --daemon [root@backup /]# ps -ef|grep rsync

root 4566 1 0 11:26 ? 00:00:00 rsync --daemon root 4568 2809 0 11:27 pts/0 00:00:00 grep --color=auto rsync [root@backup /]# netstat -lntup|grep rsync tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 4566/rsync
tcp 0 0 :::873 :::* LISTEN 4566/rsync

1.8.2 rsync守护进程客户端部署 客户端测试过程: rsync -av /etc/hosts rsync_backup@172.16.1.41::backup

rsync命令选项

-n:测试,在不确定命令是否能按照意愿执行时,务必要实现测试 -v:详细输出模式,--verbose -q:--quiet,静默模式 -c:--checksum,开启校验功能,强行对文件传输进行校验 -r:--recursive,递归复制 表示增加文件的意思