Rsync全网备份项目

Rsync全网备份项目

https://edu.51cto.com/course/3497.html

1、基本备份要求

已经3台服务器主机名分别为web01、nfs01、backup主机信息如下表

服务器说明内网         IP(NAT)          主机名称

web服务器             172.16.1.7/24           web01

NFS存储服务器     172.16.1.31/24          nfs01

rsync备份服务器    172.16.1.41/24         backup

要求:每天晚上00点整在web服务器上打包备份系统配置文件、网站程序目录及访问日志并通过rsync命令推送到备份服务器backup上备份保留(备份思路可以是先在本地按日期打包,然后再推送到备份服务器backup上),NFS存储服务器同web服务器,实际工作中就是全部的服务器。


具体要求如下:

1)所有服务器的备份目录必须都为backup

2)要备份的系统配置文件包括但不限于:

      a. 定时任务服务的配置文件(/var/spool/cron/root)(适合web和nfs服务器)

       b. 开机自启的配置文件(/etc/rc.local)(适合web和nfs服务器)

       c. 日常脚本的目录(/server/scripts)

       d. 防火墙iptables的配置文件(/etc/sysconfig/iptables)

       e. 自己思考下还有什么需要备份呢?

3)web服务器站点目录假定为(/var/html/www)

4)wev服务器A访问日志路径假定为(/app/logs)

5)web服务器保留打包后7天的备份数据(本地不能多于7天)

6)备份服务器上,保留每周一的所有数据副本,其它要保留6个月的数据副本

7)备份服务器上要按备份数据服务器内网IP为目录保存备份,备份的文件按照时间名称保存

8)需要确保备份信息的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发送给系统管理员邮箱中


2、本项目的整个备份逻辑结构如下图

第一步:环境准备

rsync服务端环境准备:

1)下载安装rsync

[root@backup ~]# yum -yinstall rsync


2)编写配置文件/etc/rsyncd.conf

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

##create by HQ at 2020

###rsyncd.conf start###


uid = rsync

gid = rsync

port = 873

fake super = yes

use chroot = no

max connections = 200

timeout = 300

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 = "backup dir by oldboy"

path = /backup/

read_only = false


[dev]

comment = "dev dir by oldboy"

path = /backup/dev


3)创建虚拟用户rsync

[root@backup ~]# useraddrsync -M -s /sbin/nologin


4)创建服务密码认证文件,并赋予600权限

[root@backup ~]# echo"rsync_backup:oldboy123" >/etc/rsync.password

[root@backup ~]# chmod600 /etc/rsync.password


5)创建备份目录backup,并修改属主、属组信息为rsync

[root@backup ~]# mkdir/backup

[root@backup ~]# chownrsync.rsync /backup/


6)启动rsyncd服务

[root@backup ~]#systemctl start rsyncd


Rsync客户端环境准备

web01:

[root@web01 ~]# echo"oldboy123" >/etc/rsync.password

[root@web01 ~]# chmod600 /etc/rsync.password

nfs01:

[root@nfs01 ~]# echo"oldboy123" >/etc/rsync.password

[root@nfs01 ~]# chmod600 /etc/rsync.password


测试rsync备份

rsync

-avz /etc/hosts rsync_backup@172.16.1.41::backup/$(hostname -i)/

--password-file=/etc/rsync.password

Rsync全网备份

1)所有服务器的备份目录必须都为backup

[root@backup ~]# mkdir/backup/


2)要备份的系统配置文件包括但不限于:

      a. 定时任务服务的配置文件(/var/spool/cron/root)(适合web和nfs服务器)

       b. 开机自启的配置文件(/etc/rc.local)(适合web和nfs服务器)

       c. 日常脚本的目录(/server/scripts)

       d. 防火墙iptables的配置文件(/etc/sysconfig/iptables)

       e. 自己思考下还有什么需要备份呢?

[root@web01 /]#cd /

[root@web01 /]#mkdir -p/backup/$(hostname -i)

[root@web01

/]#tar -zchf /backup/$(hostname -i)/data_server-$(date +%F_week%w -d

-"1day").tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts

./etc/sysconfig/iptables

3)web服务器站点目录假定为(/var/html/www)

[root@web01 /]# tar-zchf /backup/$(hostname -i)/data_log-$(date +%F_week%w -d -"1day").tar.gz./app/logs


4)wev服务器A访问日志路径假定为(/app/logs)

[root@web01 /]#tar -zchf/backup/$(hostname -i)/data_log-$(date +%F_week%w -d -"1day").tar.gz./app/logs

5)web服务器保留打包后7天的备份数据(本地不能多于7天)

[root@web01 /]# find/backup/ -type f -mtime +7 | xargs rm

[root@web01 /]# rsync-avz /backup/ rsync_backup@172.16.1.41::backup--password-file=/etc/rsync.password

6)备份服务器上,保留每周一的所有数据副本,其它要保留6个月的数据副本

find /backup/ -type f-mtime +180 ! -name "*week1*" | xargs rm

7)备份服务器上要按备份数据服务器内网IP为目录保存备份,备份的文件按照时间名称保存

8)需要确保备份信息的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发送给系统管理员邮箱中

第一步:生成指纹认证文件

[root@web01

/]# find /backup/ -type f -mtime -1 ! -name "finger.txt" | xargs

md5sum >/backup/$(hostname -i)/finger.txt

第二步:验证数据完整性

[root@backup

~]# find /backup/ -type f -name "finger.txt" | xargs md5sum -c

OK表示数据完整  failed表示不完整


第三步:将验证结果发送到邮箱

1)配置/etc/mail.rc文件

[root@backup ~]# vim/etc/mail.rc

#告警邮件发送配置

setfrom=915979992@qq.com smtp=smtp.qq.com

set

smtp-auth-user=915979992@qq.com smtp-auth-password=eevftpwzyzaibbea

smtp-auth=login

2)测试邮件能否正常发送

[root@backup ~]# mail -s"test mail" 276715936@qq.com

3)将验证结果写入/tmp/check.txt文件

[root@backup ~]# find/backup/ -type f -name "finger.txt"|xargs md5sum -c>/tmp/check.txt

4)将验证结果发送到运维邮箱

[root@backup ~]# mail -s"check data info for $(date +%F -d -"1day")"276715936@qq.com

编写脚本,实现自动备份(定时任务)

客户端脚本:

[root@web01 ~]# vim/server/scripts/backup.sh

#!/bin/bash

#########################################

#                       rsync全网备份客户端脚本               #

#########################################

Backup_dir="/backup"

IP_info=$(hostname -i)

#create backup dir

mkdir -p$Backup_dir/$IP_info

#tar data dir

cd /

tar -zchf$Backup_dir/$IP_info/server-data-$(date +%F_week%w -d-"1day").tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts./etc/sysconfig/iptables

tar -zchf$Backup_dir/$IP_info/server-log-$(date +%F_week%w -d-"1day").tar.gz  ./app/logs

tar -zchf$Backup_dir/$IP_info/server-www-$(date +%F_week%w -d-"1day").tar.gz  ./var/html/www

#del 7 day ago data

find $Backup_dir/ -typef -mtime +7 | xargs rm &>/dev/null

#create finger file

find $Backup_dir/ -typef -mtime -1 ! -name "finger.txt" | xargs md5sum>$Backup_dir/$IP_info/finger.txt

#backup push data info

rsync -avz $Backup_dir/rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password


定时任务:

[root@web01 ~]# crontab-e

#rsync backup

0 0 * * * /bin/bash/server/scripts/backup.sh &>/dev/nul


服务端脚本:

#!/bin/bash


#########################################

#                rsync全网备份服务端脚本                     #

#########################################

#del 180 day data,backupevery week1

find /backup/ -type f-mtime +180 ! -name "*week1*" | xargs rm &>/dev/null


#check backup data andtouch check file

find /backup/ -type f-mtime -1 -name "finger.txt" | xargs md5sum -c >/tmp/check.txt


#send check mail

mail

-s "check backup data-$(date +%F_week%w -d -"1day")"

276715936@qq.com </tmp/check.txt


定时任务:

#rsync backup

1 0 * * * /bin/bash/server/scripts/backup_server.sh &>/dev/null

调整服务器进行验证

定时任务开始前数据

[root@backup /]# date -s20210202

切换时间,定时任务执行后数据

备份结果邮箱发送

+===============================+

#            rsync服务异常问题汇总                  #

+===============================+

1. rsync服务端开启的iptables防火墙

【客户端错误】

ERROR: NO route to host

【异常解决】

关闭防火墙

service iptables stop

systemctl stop firewalld


2. rsync客户端执行rsync命令错误

【客户端错误】

ERROR: The remote pathmust start with a module name not a /

这个是rsync模块语法书写错误

【异常解决】

注意正确书写模块信息,不能书写成路径信息

rsync命令语法错误,::/backup是错误的,应该是::backup


3. rsync服务认证错误

【客户端错误】

@ERROR: auth failed onmodule backup

【异常解决】

1. 密码真的输入错误,用户名真的错误

2. secrets file =

/etc/rsync.password指定密码文件和实际密码文件名称不一致

3. /etc/rsync.password文件的权限不是600

4. rsync_backup:123456 密码配置文件后面注意不要有空格

5.rsync客户端密码文件中只输入密码信息即可,不要输入虚拟认证用户名称


4. rsync服务位置模块错误

【客户端错误】

 [root@nfs01 ~]# rsync -avz /etc/hostsrsync_backup@172.16.1.41::bckup

@ERROR: Unknown module'bckup'

这个主要是模块信息书写错误

【异常解决】

检查配置文件/etc/rsyncd.conf配置文件模块名称书写或rsync语法书写时错误


5. rsync服务权限阻止错误

【客户端错误】

[root@nfs01 ~]# rsync-avz /etc/hosts rsync_backup@172.16.1.41::backup

rsync: chgrp".hosts.FFRXhm" (in backup) failed: Operation not permitted (1)

【异常解决】

1. 将备份目录的属主、属组修改为rsync

2. 将备份目录的权限修改为755

3. 在/etc/rsyncd.conf文件中添加fake super = yes


6. rsync服务备份目录异常

【客户端错误】

[root@nfs01 ~]# rsync-avz /etc/hosts rsync_backup@172.16.1.41::backup

@ERROR: chdir failed

rsync error: errorstarting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]

【异常解决】

1. 备份目录没有建立,建立备份目录

2. 建立的备份存储目录和配置文件/etc/rsyncd.conf里定义的不一致


7. rsync服务无效用户信息

【客户端错误】

[root@nfs01 ~]# rsync-avz /etc/hosts rsync_backup@172.16.1.41::backup

@ERROR: invalid uidrsync

【异常解决】

rsync虚拟用户没有创建或者被删除


8. 客户端已经配置了密码文件,但免密登录方式依旧需要输入密码

【客户端错误】

password file must notbe other-accessible

【异常解决】

rsync客户端的密钥文件/etc/rsync.password权限不是600


9. rsync客户端连接慢问题

【异常解决】

查看日志进行分析,编写rsync服务端hosts解析文件


10. --password-file书写错误

【客户端错误】

rsync: could not openpassword file /etc/password: No such file or directory (2)

【异常解决】

正确书写方式:--password-file=/etc/rsync.password,要与服务端配置文件里的书写一致

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容