一、备份服务器

1.什么是备份
备份就是将重要的数据或文件复制一份保存到另一个地方,实现不同主机之间的数据同步。

2.什么情况下需要备份
一般数据比较重要的情况下,数据如果丢失很容易找不回来了的,建议备份。

3.能不能不做备份
 对于重要的数据一定要备份
 对于不重要的数据可以不备份或备份一部分

4.备份的工具
  本地备份工具:cp
  远程备份工具:scp、Rsync
      scp  :全量备份
      Rsync:增量备份

二、scp备份

 

1、概念及参数

 

Linux scp 命令用于 Linux 之间复制文件和目录。

 

scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。

 

scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。

 

2 scp的格式

2.1、推数据

将本机的文件上传到其他服务器

scp [参数] [本机文件的路径] [用户]@[ip]:[远程主机的路径]

2.2、拉数据

将其他服务器上的文件下载到本机

scp [参数(非必选)] [用户]@[ip]:[远程主机的路径] [本机文件的路径]

3、scp中参数

-p : 保留原文件的修改时间,访问时间和访问权限。
-r: 递归复制整个目录。
-l: limit 限定用户所能使用的带宽,以Kbit/s为单位。

3 案例

案例1:将DB01服务器上etc目录中所有的普通文件打包,备份到rsync服务器的/tmp目录中

[root@db01 ~]#tar -cvPf /root/etc.tar.gz $(find /etc/ -type f) 
[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/

 

 

三、rsync服务介绍:rsync是远程增量文件备份工具

1.简介

rsync英文称为remote synchronizetion,

从软件的名称就可以看出来,

rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能

rsync官方地址:rsyncrsync监听端口:873
rsync运行模式:C/S client/server

rsync简称叫做远程同步,可以实现不同主机之间的数据同步,还支持全量和增量

2.rsync特性

支持拷贝特殊文件,如连接文件、设备等。
可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变 –p。
可以实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar-N)。
可以使用rcp、rsh、ssh等方式来配合传输文件(rsync本身不对数据加密)。
可以通过socket(进程方式)传输文件和数据(服务端和客户端)。
支持匿名的活认证(无需系统用户)的进程模式传输,可以实现方便安全的进行数据备份和镜像。

3、Rsync应用场景

cron + rsync : 跟定时任务进行绑定。
rsync + innotify : 以守护进程的方式同步文件

1)全量备份:将数据完整的复制一份保留下了

2)增量备份:备份上一此备份后新增的数据

4.rsync的传输方式

push 推

客户端将数据从本地推送至服务端

pull 拉

客户端将数据从服务端拉取到本地

5.Rsync的传输模式

本地传输模式
远程传输模式
以守护进程的方式

 

1、本地传输模式

1.1、格式

rsync [参数] [原来的路径] [现在的路径]

1.2、参数

-t # 保持文件时间信息
-r # 递归传输目录及子目录

 

 

1.3 案例

案例1:将/tmp/etc.tar.gz上传到/mnt目录下

rsync /tmp/etc.tar.gz /mnt/

服务器备份mongodb 服务器备份叫什么_服务器备份mongodb

 

案例2:将/root目录传输到/mnt目录

rsync -r /root/  /mnt/

服务器备份mongodb 服务器备份叫什么_守护进程_02

 

2、远程传输模式

常用的参数组合:-avzP

2.1、推数据

rsync [参数] [本地文件路径] [用户]@[ip]:[远程路径]

案例:将3.txt传输到db01服务器上的/opt目录

 

 

2.2、拉数据

rsync [参数] [用户]@[ip]:[远程路径] [本地文件路径]

案例:拉取db01服务器上的3.txt 拉到/root目录下

 

服务器备份mongodb 服务器备份叫什么_服务器_03

 

 

3、以守护进程的方式

3.1、为什么需要以守护进程的方式传输

保证数据安全:rsync传输时,使用的是系统用户和系统用户的密码,非常的不安全
使用普通用又会出现权限问题
数据归档

3.2、步骤

部署服务端:rsync

1、编写rsync的守护进程的配置文件

1.1、编写配置文件

vi /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]   # 备份的模块(backup是模块的名称)(可以是其他名字)
comment = welcome to oldboyedu backup!  
path = /backup    # 备份的路径

服务器备份mongodb 服务器备份叫什么_服务器备份mongodb_04

 

 

 

 

1.2、创建rsync的启动用户

useradd rsync -r -M -s /sbin/nologin

-M  不要自动建立用户的登入目录

服务器备份mongodb 服务器备份叫什么_守护进程_05

 

 

1.3、创建密码文件

touch /etc/rsync.passwd

1.4、创建用户和密码关联数据

echo 'rsync_backup:123456' > /etc/rsync.passwd

1.5、授权密码文件

chmod 600 /etc/rsync.passwd

2、创建备份的目录

2.1、创建目录

mkdir /backup

2.2、将目录的用户修改成rsync

chown rsync.rsync /backup/

3、启动rsync服务

systemctl start rsyncd

部署客户端:db01

1、安装rsync

yum install rsync -y

2、开始传输

2.1、输入密码传输

rsync -avzP /opt/3.txt rsync_backup@172.16.1.41::backup

 

 

服务器备份mongodb 服务器备份叫什么_守护进程_06

 

 

2.2、使用密码文件

echo "123456" > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd
rsync -avzP /opt/3.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.passwd

 

 

2.3、使用变量的方式进行传输

export RSYNC_PASSWORD=123456
rsync -avzP /opt/3.txt rsync_backup@172.16.1.41::backup

服务器备份mongodb 服务器备份叫什么_服务器备份mongodb_07

 

 

rsync常见报错:

服务器备份mongodb 服务器备份叫什么_数据_08

 

 

服务器备份mongodb 服务器备份叫什么_守护进程_09

 

 

服务器备份mongodb 服务器备份叫什么_服务器备份mongodb_10

 

 

知识储备:

对 /sbin/nologin 的理解:

系统账号的shell使用 /sbin/nologin ,此时无法登陆系统,即使给了密码也不行。

所谓“无法登陆”指的仅是这个用户无法使用bash或其他shell来登陆系统而已,并不是说这个账号就无法使用系统资源。

举例来说,各个系统账号中,打印作业有lp这个账号管理,www服务器有apache这个账号管理,他们都可以进行系统程序的工作,但就是无法登陆主机而已。

2:Rsync结合inotify

怎样实现rsync根据目录的变化去实时同步数据。

inotify就是实时监控目录中文件的变化。

1、安装inotify(客户端)

yum -y install inotify-tools

2、inotify常用参数

 

 

3、测试inotify监控目录

inotifywait  -mr  --format "%Xe %w %f" -e modify,close_write,create,delete [监控的目录]

 

 

4、实时同步/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

服务器备份mongodb 服务器备份叫什么_服务器备份mongodb_11

 

 

服务器备份mongodb 服务器备份叫什么_服务器备份mongodb_12

 

 

5、使用shell脚本实时同步/opt目录

家目录下编写脚本:

vi inotify.sh

输入以下内容

DIR=/opt/
USERNAME=rsync_backup
IP="172.16.1.41"
MODULE=backup

inotifywait -mr --format "%Xe %w %f" -e modify,close_write,create,delete ${DIR} |
while read line ;do  rsync -avzP ${DIR}  ${USERNAME}@${IP}::${MODULE} --password-file=/etc/rsync.passwd &>/dev/null; done

 

 

增加可执行权限:

chmod +x inotify.sh

运行脚本:

./inotify.sh

 

 

服务器备份mongodb 服务器备份叫什么_服务器备份mongodb_13

 

 

知识储备:

服务器备份mongodb 服务器备份叫什么_服务器_14

 

服务器备份mongodb 服务器备份叫什么_数据_15