个人笔记:网站架构之Rsync备份——上(三十三)

一、备份的基本概念

  • 备份就是把文件在复制一份存储起来。(给文件增加一个副本)
  • 备份的意义在于:
  1. 数据非常重要,尽可能的保证数据不丢失
  2. 快速回复数据
  • 备份的种类:
  1. 完全备份:完整的复制一份。效率低下,占用空间。
  2. 增量备份:只备份变化的那部分。效率高,节省空间。
  • 备份工具
    本地备份:cp(完整备份,每次全部拷贝一份)
    远程备份:scp,rsync

二、备份工具Rsync基本介绍

  • Rsync:
    远程同步,可以实现“不同主机”之间的同步,同时支持增量和全量的同步方式。
  • Rsync备份工具的前置条件:
    推送(Push):将本地的数据推送到备份服务器
    拉取(Pull):将备份服务器的数据拉取到本地
  • Rsync三大传输模式:
  1. 本地传输
  2. 远程传输
  3. 守护进程

三、Rsync的应用

  • 首先安装这个命令工具
yum install rsync -y
  • 条件准备:
    一台客户端:NET:10.0.0.31 LAN:172.16.1.31
    一台服务端:NET:10.0.0.41 LAN:172.16.1.41
  • rsync的选项
选项 意义
-a 归档模式传输, 等于-tropgDl
-v 详细模式输出, 打印速率, 文件数量等
-z 传输时进行压缩以提高效率
-r 递归传输目录及子目录,即目录下得所有目录都同样传输。
-t 保持文件时间信息
-o 保持文件属主信息
-p 保持文件权限
-g 保持文件属组信息
-l 保留软连接
-P 显示同步的过程及传输时的进度等信息
-D 保持设备文件信息
-L 保留软连接指向的目标文件
-e 使用的信道协议,指定替代rsh的shell程序
–exclude=PATTERN 指定排除不需要传输的文件模式
–exclude-from=file 文件名所在的目录文件
–bwlimit=100 限速传输
–partial 断点续传
–delete 让目标目录和源目录数据保持一致
1.本地传输方式,单个主机之间的数据拷贝,类似cp
  •   	rsync +选项(-avz)+文件/目录路径+目标路径=备份
    

(第一次完整备份,后面增长备份)

#将/file.txt备份到/tmp目录下
rsync -avz /file.txt /tmp/
2.远程传输方式,借助ssh协议进行传输,意味着需要知道对端的用户名和密码。
  • 推送(Push):

      	rsync+选项(-avz)+文件/目录路径+用户名@网段:目标路径
    
#将/file.txt推送至172.16.1.31服务器的/opt目录下,31网段的服务器使用的是root用户
rsync -avz /file.txt root@172.16.1.31:/opt
  • 拉取(Pull):

      	rsync+选项(-avz)+用户名@网段:文件/目录路径+目标路径
    
#拉取远程服务器 172.16.1.31 /opt目录下的file.txt 文件 至 本地  /mnt 目录
rsync -avz root@172.16.1.31:/opt /mnt/
  • 如果是推送或拉取目录,注意:
    1. 添加 / 表示推送目录下的所有内容
    2. 不添加 / 表示推送该目录本身,以及目录下的内容

    缺点:依托对端主机的用户身份权限

3.守护进程模式(重要)

安装——>配置——>启动——>测试

  • 安装rsync
yum install rsync -y
  • 配置
#查看配置文件
rpm -qc rsync
#在服务端上配置
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 oldboyedu backup!
	path = /backup
	配置详解:
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					 # 定义接收备份数据目录

根据配置文件的解读我们需要做一些初始化的操作:

  1. 创建rsync进程的运行用户
useradd -M -s /sbin/nologin rsync
  1. 定义虚拟用户名rsync_backup的密码
echo 'rsync_bakcup:1' > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd		#修改权限
  1. 创建存储备份的模块目录
mkdir /backup
chown -R rsync.rsync /backup/
  • 启动
systemctl start rsync
systemctl enbale rsync
  • 测试
    推送(Push):
#使用172.16.1.31 推送 /file.txt 文件至 备份服务器 41 的 backup模块	
rsync -avz /file.txt rsync_backup@172.16.1.41::backup

拉取(Pull):

#拉取 172.16.1.41 备份服务器 backup模块下的数据到客户端的/opt目录下
rsync -avz rsync_backup@172.16.1.41::backup /opt/
实战
  1. 将客户端/opt/1.txt备份到服务端backup模块下并且限速传输1MB/S
rsync -avz --bwlimit 1 -P /opt/1.txt rsync_backup@172.16.1.41::backup
  1. Rsync实现数据无差异同步
#推: 客户端 推送 到 服务端,服务端必须与客户端保持一致。
rsync -avz --delete  -P /opt/ rsync_backup@172.16.1.41::backup

#拉: 客户端 拉取 服务端数据,服务端有什么,客户端就有什么。 客户端必须与服务端完全一致。
rsync -avz --delete  rsync_backup@172.16.1.41::backup /opt/
  1. 无需输入密码实现rsync推送和拉取
	方式一: --password-file
echo "123456" > /etc/rsync.pass
chmod 600 /etc/rsync.pass
rsync -avz --delete  rsync_backup@172.16.1.41::backup /opt/ --password-file=/etc/rsync.pass

	方式二: 设定环境变量方式
export RSYNC_PASSWORD=123456	#只当前窗口有用,换一个窗口就没用了(放到脚本中使用,非常的方便)
rsync -avz --delete  rsync_backup@172.16.1.41::backup /opt/

你可能感兴趣的:(个人笔记:网站架构之Rsync备份——上(三十三))