Day33 课堂笔记

                rsync服务及搭建备份服务器

实践排除复制:

NFS01:

[root@nfs01 ~]# mkdir /data -p

[root@nfs01 ~]# cd /data

[root@nfs01 /data]# touch {a..d}

[root@nfs01 /data]# ls

a  b  c  d

--exclude 排除参数

例:排除 a b

[root@nfs01 /data]# rsync -avz /data/ --exclude=a --exclude=b  [email protected]::backup

sending incremental file list

./

c

d

排除1到4

[root@nfs01 /data]# touch {1..5}

[root@nfs01 /data]# rsync -avz /data/ --exclude={1..4}  [email protected]::backup

sending incremental file list

./

5

a

b

[root@nfs01 /data]# rsync -avz /data/ --exclude={1,3,a}  [email protected]::backup

sending incremental file list

2

4

--exclude-from 从文件排除

[root@nfs01 /data]# rsync -avz /data/ --exclude-from=./paichu.txt  [email protected]::backup

sending incremental file list

./

16

17

18

19

20

paichu.txt

实践删除:

rsync作为镜像,相当于raid1,让两台服务器目录保持一致。

--delete 让两台服务器目录保持一致

推送:

rsync -avz --delete /data/  [email protected]::backup

本地目录有啥,远端就有啥。

注意:远端目录是不是东西更多,多了东西会被删除。提前备份backup对应的目录。

rsync -avz --delete [email protected]::backup /data/

远端有啥。本地目录就有啥,注意本地/data目录。把/data改成根。提前注意备份本地/data

--partial 支持大文件断点续传

--bwlimit=KBPS 限速。

企业案例:

某上市公司,白天高峰期某DBA人员从数据库服务器通过rsync将上百GB数据复制到备份服务器,导致数据库库服务器带宽占满,造成用户无法访问网站的悲剧。其实可以利用rsync限速功能,将复制速度限制在剩余带宽的1/3或者1/2,可能就不会出现故障了

1)最简单的实现,可以在配置文件结尾加如下内容(特殊底纹部分):

[root@backup ~]# cat /etc/rsyncd.conf

uid = rsync

gid = rsync

use chroot = no

fake super = yes

max connections = 200

timeout = 600

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 = welcome to oldboyedu backup.

path = /backup/

[data]        #<==新模块。

path = /data/  #<==新备份目录。

#除了增加以上两行外,读者也可以设定更多的独立配置参数,例如:独立虚拟用户,独立密码文件等。

2)建立目录并授权。

[root@backup ~]# mkdir -p /data

[root@backup ~]# chown -R rsync.rsync /data

[root@backup ~]# ls -ld /data

drwxr-xr-x 2 rsync rsync 6 4月  16 10:04 /data

3)重启rsync服务(只要修改配置,就考虑重载服务)

[root@backup ~]# systemctl restart rsyncd

4)从客户端访问测试

[root@backup ~]# ls /data

etc

1、内部人员产生的数据(定时备份足矣):

程序员开发代码(他电脑上)==>代码服务上(git/svn代码版本管理)==>测试环境测试===>正式环境

原则上程序代码可以不备份。

运维人员,写个定时任务,写个备份脚本,更改或增加服务配置rsyncd.conf,需要备份

运维人员修改配置(测试服务器)==>代码服务器上(git/svn代码版本管理)==>测试环境测试===>正式环境

原则上运维人员的变更可以不备份。

2、用户产生的数据(必须实时备份)

图片、视频等文件是放在存储服务器上的,任意时刻都可能传上来,必须实时备份。

文本(博客文章),放在数据库里,,任意时刻都可能发布,必须实时备份。

第一个里程碑:

41搭建好rsync服务,并在31、7上测试成功。

第二个里程碑 开发脚本打包备份

/backup 备份目录

/var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs 需要备份的内容

模拟创建:

[root@nfs01 ~]# mkdir -p /server/scripts

[root@web01 ~]# mkdir -p /server/scripts /var/html/www /app/logs

web01:

[root@web01 ~]# mkdir -p /backup

[root@web01 ~]# ls -ld /backup/

drwxr-xr-x 2 root root 6 4月  16 11:36 /backup/

[root@web01 /]# tar zcvhf /backup/bak_$(date +%F_%w).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs

tar: 从成员名中删除开头的“/”

/var/spool/cron/root

/etc/rc.local

/server/scripts/

/var/html/www/

/app/logs/

[root@web01 /]# ls /backup/

bak_2019-04-16_2.tar.gz

写脚本:

[root@web01 /]# mkdir /server/scripts/ -p

[root@web01 /]# cd /server/scripts/

[root@web01 /server/scripts]# cat  /server/scripts/bak.sh

[root@web01 /server/scripts]# cat bak.sh

#!/bin/sh

export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"

export RSYNC_PASSWORD=oldboy

IP=$(hostname -i)

mkdir -p /backup/$IP

#1.打包

tar zchf /backup/$IP/bak_$(date +%F_%w).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs &>/dev/null &&\

#2.删除

find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm -f &&\

#3.推送

rsync -az /backup/ [email protected]::backup &>/dev/null

[root@web01 /server/scripts]# /bin/sh /server/scripts/bak.sh

[root@web01 /server/scripts]# ls /backup/

bak_2019-04-16_2.tar.gz

定时任务:

[root@web01 /server/scripts]# crontab -e

[root@web01 /server/scripts]# crontab -l|tail -2

######back.....

00 00 * * * /bin/sh /server/scripts/bak.sh >/dev/null 2>&1

[root@web01 /server/scripts]# find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm -f

确保备份完整。

做flag和采集指纹

[root@nfs01 /server/scripts]# #采集人的指纹

[root@nfs01 /server/scripts]# md5sum oldboy.txt >zhiwen.log

[root@nfs01 /server/scripts]# cat zhiwen.log

348bd3ce10ec00ecc29d31ec97cd5839  oldboy.txt

[root@nfs01 /server/scripts]# #校验

[root@nfs01 /server/scripts]# md5sum -c zhiwen.log

oldboy.txt: 确定

[root@web01 /server/scripts]# cat bak.sh

#!/bin/sh

export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"

export RSYNC_PASSWORD=oldboy

IP=$(hostname -i)

mkdir -p /backup/$IP

#1.打包

tar zchf /backup/$IP/bak_${IP}_$(date +%F_%w).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs &>/dev/null &&\

touch /backup/$IP/bak_${IP}_$(date +%F_%w).flag &&\

#采集指纹

find /backup/ -type f -name "*.tar.gz"|xargs md5sum >/backup/$IP/bak_${IP}_$(date +%F_%w).flag &&\

#2.删除

find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm -f &&\

#3.推送

rsync -az /backup/ [email protected]::backup &>/dev/null

你可能感兴趣的:(Day33 课堂笔记)