备份服务器(Rsync)
1、介绍备份的场景
1、什么情况下需要备份
一般数据比较重要的情况下,数据如果丢失很容易找不回来了的,建议备份。
2、什么是备份
将原有的数据复制一份或几份存起来,以备不时之需。
3、能不能不做备份
可以,但是数据丢失不要后悔。
4、备份的工具
本地备份工具:cp
远程备份工具:scp、Rsync
scp :全量备份
rsync : 增量备份
5、scp的格式
1、推数据
将本机的文件上传到其他服务器
scp [参数] [本机文件的路径] [用户]@[ip]:[远程主机的路径]
2、拉数据
将其他服务器上的文件下载到本机
scp [参数] [用户]@[ip]:[远程主机的路径] [本机文件的路径]
3、scp中参数
-p : 保留原文件的修改时间,访问时间和访问权限。
案例1:将DB01服务器上etc目录中所有的普通文件打包,备份到rsync服务器的/tmp目录中
[root@db01 ~]# scp /root/etc.tar.gz root@172.16.1.41:/tmp/
案例2:要求rsync服务器主动备份db服务器的etc.tar.gz
[root@rsync tmp]# scp root@172.16.1.51:/root/etc.tar.gz /tmp/
案例3:要求备份etc.tar.gz文件,且时间尽可能不改变
[root@db01 ~]# scp -p etc.tar.gz root@172.16.1.41:/tmp/
案例4:要求将db01的/root目录上传到rsync的/opt目录中
[root@db01 ~]# scp -r /root/ root@172.16.1.41:/opt/
2、介绍Rsync
rsync是远程增量文件备份工具。
2、rsync的特性
支持拷贝特殊文件,如连接文件、设备等。
可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变 –p。
可以实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar-N)。
可以使用rcp、rsh、ssh等方式来配合传输文件(rsync本身不对数据加密)。
可以通过socket(进程方式)传输文件和数据(服务端和客户端)。
支持匿名的活认证(无需系统用户)的进程模式传输,可以实现方便安全的进行数据备份和镜像。
3、场景
cron + rsync : 跟定时任务进行绑定。
rsync + innotify : 以守护进程的方式同步文件
灾备
容灾
4、Rsync的传输模式
1、本地传输模式
1、格式
rsync [参数] [原来的路径] [现在的路径]
2、案例
案例1:将/tmp/etc.tar.gz上传到/mnt目录下
[root@rsync opt]# rsync /tmp/etc.tar.gz /mnt/
[root@rsync opt]# ll /mnt/
total 11136
-rw-r--r--. 1 root root 11402223 Oct 19 16:04 etc.tar.gz
3、参数
-t # 保持文件时间信息
-r # 递归传输目录及子目录
常用的参数组合:-avzP
案例:将/root目录传输到/mnt目录
[root@rsync opt]# rsync -r /root/ /mnt/
2、远程传输模式
1、推数据
rsync [参数] [本地文件路径] [用户]@[ip]:[远程路径]
案例:
将3.txt传输到db01服务器上的/opt目录
[root@rsync tmp]# rsync -avzP 3.txt root@172.16.1.51:/opt/
2、拉数据
[root@rsync tmp]# rsync -avzP root@172.16.1.51:/opt/3.txt /tmp/
3、以守护进程的方式
1、为什么需要以守护进程的方式传输
1、保证数据安全
2、数据归档
2、步骤
1、编写rsync的守护进程的配置文件
1、编写配置文件
/etc/rsyncd.conf
2、创建rsync的启动用户
[root@rsync tmp]# useradd rsync -r -M -s /sbin/nologin
3、创建密码文件
[root@rsync tmp]# touch /etc/rsync.passwd
4、创建用户和密码关联数据
[root@rsync tmp]# echo 'rsync_backup:123456' > /etc/rsync.passwd
5、授权密码文件
[root@rsync tmp]# chmod 600 /etc/rsync.passwd
uid = rsync #启动服务的用户id(可以使用名称代替) 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 # 存放密码的文件(权限必须是600,密码是明文) log file = /var/log/rsyncd.log ##################################### [backup] # 备份的模块(backup是模块的名称) comment = welcome to oldboyedu backup! # 提示语 path = /backup # 备份的路径
2、创建备份的目录
1、创建目录
[root@rsync tmp]# mkdir /backup
2、将目录的用户修改成rsync
[root@rsync tmp]# chown rsync.rsync /backup/
3、启动rsync服务
[root@rsync tmp]# systemctl start rsyncd
2、部署客户端
1、安装rsync
yum install rsync -y
2、开始传输
1、输入密码传输
[root@db01 opt]# rsync -avzP /opt/3.txt rsync_backup@172.16.1.4
2、使用密码文件
[root@db01 opt]# echo "123456" > /etc/rsync.passwd
[root@db01 opt]# chmod 600 /etc/rsync.passwd
[root@db01 opt]# rsync -avzP /opt/3.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.passwd
3、使用变量的方式进行传输
[root@db01 opt]# export RSYNC_PASSWORD=123456
[root@db01 opt]# rsync -avzP /opt/3.txt rsync_backup@172.16.1.41::backup
5、Rsync + inotify
怎样实现rsync根据目录的变化去实时同步数据。
inotify就是实时监控目录中文件的变化。
1、安装inotify(客户端)
yum -y install inotify-tools
2、测试inotify监控目录
inotifywait -mr --format "%Xe %w %f" -e modify,close_write,create,delete [监控的目录]
3、实时同步/opt目录
inotifywait -mr --format "%Xe %w %f" -e modify,close_write,create,delete /opt/ | while read line ;do rsync -avzP /opt/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.passwd ; done
4、文艺青年版
DIR=/opt/
USERNAME=rsync_backup
IP="172.16.1.41"
MODULE=backup