备份服务器(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