【Rsync项目实战一】备份全网服务器数据

目录

【Rsync项目实战】备份全网服务器数据

标签(空格分隔): Linux服务搭建-陈思齐

---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处,作者信息和本声明。否则将追究法律责任。http://www.cnblogs.com/chensiqiqi/



【企业案例】

某公司里有一台NFS服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他 机器上做一个周期性定时备份。要求如下:

每天晚上00点整在NFS服务器nfs01上打包备份网站程序目录等并通过rsync命令推送到备份服务器backup上备份保存(备份思路 可以是先在本地按IP地址+日期打包,然后再利用rsync推送到备份服务器上)。NFS存储服务器同Web服务器,实际工作中就是全部的服务器。

具体要求如下:

  • [x] NFS服务器nfs01和备份服务器backup的备份目录必须都为/backup
  • [x] 要备份的系统配置文件包括但不限于:
    • 定时任务服务的配置文件(/var/spool/cron/root)
    • 开机自启动的配置文件(/etc/rc.local)
    • 日常脚本的目录(/server/scripts)
    • 防火墙iptables的配置文件(/etc/sysconfig/iptables)
    • 自己思考下还有什么需要备份呢
  • [x] Web服务器站点目录假定为(/var/html/www)
  • [x] Web服务器A访问日志路径假定为(/app/logs)
  • [x] Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)
  • [x] 备份服务器上,保留每周一的所有数据副本,其它要保留6个月的数据副本
  • [x] 备份服务器上要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存。
  • [x] 需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发送给系统管理员邮箱中。

1.1 环境部署

操作系统

[root@backup ~]# cat /etc/redhat-release 
CentOS release 6.8 (Final)

内核版本

[root@backup ~]# uname -r
2.6.32-642.el6.x86_64

主机网络参数设置:

主机名网卡eth0网卡eth1用途
backup10.0.0.41172.16.1.41rsync服务端
nfs0110.0.0.31172.16.1.31NFS存储服务器客户端
web0110.0.0.8/24172.16.1.8/24nginx web服务器

1.2 开始部署backup服务器:Rsync服务端过程:

1)确认软件是否安装:

[root@backup ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64

2)配置rsyncd.conf配置文件

#rsync_config____start
#created by chensiqi 22:00 2017-3-6
#blog:http://www.cnblogs.com/chensiqiqi/
##rsyncd.conf start##

# 用户
uid = rsync
#
gid = rsync
# 程序安全设置
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
###################################
[backup]
# 使用目录
path = /backup/
# 有错误时忽略
ignore errors
# 可读可写(truefalse
read only = false
# 阻止远程列表(不让通过远程方式看服务端有啥)
list = false
# 允许IP
hosts allow = 172.16.1.0/24
# 禁止IP
hosts deny = 0.0.0.0/32
# 虚拟用户
auth users = rsync_backup
# 存放用户和密码的文件
secrets file = /etc/rsync.password

##rsync_config____end##

3)创建rsync账户及共享目录并修改目录属主为rsync

[root@backup ~]# useradd -M -s /sbin/nologin rsync
[root@backup ~]# mkdir /backup
[root@backup ~]# chown -R rsync /backup

4)启动服务:rsync --daemon

[root@backup ~]# rsync --daemon
[root@backup ~]# ss -antup | grep rsync
tcp    LISTEN     0      5                     :::873                  :::*      users:(("rsync",1851,5))
tcp    LISTEN     0      5                      *:873                   *:*      users:(("rsync",1851,4))

5)制作服务启动脚本/etc/init.d/rsyncd

#!/bin/bash
#author:Mr.chen
# chkconfig:35 13 91
# description:This is Rsync service management shell script
# Source function library
. /etc/rc.d/init.d/functions

start(){
    rsync --daemon
    if [ $? -eq 0 -a `ps -ef|grep -v grep|grep rsync|wc -l` -gt 0 ];then 
        action "Starting Rsync:" /bin/true
        sleep 1
    else
        action "Starting Rsync:" /bin/false
    sleep 1 
    fi
}

stop(){
    pkill rsync;sleep 1;pkill rsync
    if [ `ps -ef|grep -v grep|grep "rsync --daemon"|wc -l` -lt 1 ];then
        action "Stopping Rsync: " /bin/true
        sleep 1
    else
        action "Stopping Rsync:" /bin/true
        sleep 1
    fi
}

case "$1" in
    start)
        start;
        ;; 
    stop)
        stop;
        ;;
    restart|reload)
        stop;
        start;
        ;; 
    *)
        echo $"Usage: $0 {start|stop|restart|reload}"
        ;;
esac

6)启动脚本放到/etc/init.d目录下,增加x执行权限并添加开机启动

[root@backup ~]# chmod +x /etc/init.d/rsyncd
[root@backup ~]# /etc/init.d/rsyncd stop
已终止
[root@backup ~]# /etc/init.d/rsyncd start
Starting Rsync:                                            [确定]
[root@backup ~]# chkconfig rsyncd on
[root@backup ~]# chkconfig --list | grep rsync
rsyncd          0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭

7)创建rsync虚拟账户名和密码,并赋予密码文件600权限

[root@backup ~]# echo "rsync_backup:123456" > /etc/rsync.password
[root@backup ~]# cat /etc/rsync.password
rsync_backup:123456
[root@backup ~]# chmod 600 /etc/rsync.password
[root@backup ~]# ll /etc/rsync.password
-rw-------. 1 root root 20 37 20:54 /etc/rsync.password

8)配置Rsync服务器端检查脚本

#!/bin/bash
# 全网服务器备份解决方案_rsync服务器端检查脚本
# author:Mr.chen
# 2017-3-8

. /etc/init.d/functions
Path=/backup
fileName="md5sum.txt"
# 一共有几台客户端在推送数据
rsync_ClientNum=2

/etc/init.d/postfix status &>/dev/null || /etc/init.d/postfix start


if [ `find $Path/ -type f -name "md5sum*" | wc -l` -eq $rsync_ClientNum ];then
    for filepath in `find $Path/ -type f -name "md5sum*"`
    do
        /usr/bin/md5sum -c $filepath
        if [ $? -eq 0 ];then
            action "${filepath}备份正常!" /bin/true
            rm -rf $filepath
        else
            action "${filepath}备份异常!" /bin/false
            echo "${filepath}备份异常!" | mail -s "$(date +%F)备份检查告警" xxxxxxxx@qq.com
        fi
    done
else
    echo “Rsync客户端推送不完整!”
    echo "Rsync推送不完整" | mail -s "$(date +%F)备份推送告警" xxxxxxxxx@qq.com
fi

# 找出超过180天的不是周1的备份文件并删除
find $Path/ ! -name "*_2.tar.gz" -mtime +180 -type f | xargs rm -rf

9)将脚本挂定时任务

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

backup服务器Rsync服务端至此配置完毕

1.3 开始部署nfs01服务器:Rsync客户端过程:

1)只需要创建密码文件(只包含密码即可),并赋予密码文件600权限

[root@nfs01 ~]# echo "123456" > /etc/rsync.password
[root@nfs01 ~]# chmod 600 /etc/rsync.password

2)创建共享目录backup
[root@nfs01 ~]# mkdir /backup

3)在客户端进行推送测试

[root@nfs01 ~]# cd /backup
[root@nfs01 backup]# touch {1..5}
[root@nfs01 backup]# ls
1  2  3  4  5
[root@nfs01 backup]# rsync -avzP /backup/ rsync_backup@192.168.197.132::backup --password-file=/etc/rsync.password 
sending incremental file list
./
1
           0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=4/6)
2
           0 100%    0.00kB/s    0:00:00 (xfer#2, to-check=3/6)
3
           0 100%    0.00kB/s    0:00:00 (xfer#3, to-check=2/6)
4
           0 100%    0.00kB/s    0:00:00 (xfer#4, to-check=1/6)
5
           0 100%    0.00kB/s    0:00:00 (xfer#5, to-check=0/6)

sent 239 bytes  received 106 bytes  230.00 bytes/sec
total size is 0  speedup is 0.00

4)nfs01服务器打包脚本实现

#!/bin/bash
# 全网服务器备份解决方案_rsync客户端打包脚本
# author:Mr.chen
# 2017-3-7

Path=/backup
backup_Server=172.16.1.41
local_IP=`/sbin/ifconfig eth1|awk -F"[ :]+" 'NR==2{print $4}'`
Dir=${local_IP}_$(date +%F_%w)


mkdir -p $Path/$Dir
[ -f /var/spool/cron/root ] && cp -rp /var/spool/cron/root $Path/$Dir/
[ -f /etc/rc.d/rc.local ] && cp -rp /etc/rc.d/rc.local $Path/$Dir/
[ -d /server/scripts ] && cp -rp /server/scripts $Path/$Dir/
[ -d /var/html/www ] && cp -rp /var/html/www $Path/$Dir/
[ -d /app/logs ] && cp -rp /app/logs $Path/$Dir/
[ -f /etc/sysconfig/iptables ] && cp -rp /etc/sysconfig/iptables $Path/$Dir/
cd $Path

tar -zcf $Path/${Dir}.tar.gz $Dir

rm -rf $Path/$Dir
# 创建md5sum验证信息
/usr/bin/md5sum $Path/${Dir}.tar.gz > $Path/md5sum_$(local_IP).txt

# 推送打包的文件到备份服务器
rsync -az $Path/ rsync_backup@${backupServer}::backup --password-file=/etc/rsync.password
# 找出超过7天的备份并删除
find $Path/ -name "${local_IP}*" -type f -mtime +7 | xargs rm -rf

5)将脚本挂定时任务

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

NFS服务器Rsync客户端至此配置完毕

转载于:https://www.cnblogs.com/tianakong/p/10002084.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以为您提供一个简单的Shell脚本,用于备份全网服务器数据:#!/bin/bash# 备份全网服务器数据for server in `cat server_list`dobackup_host $serverdone ### 回答2: 全网服务器数据备份shell脚本主要是实现对服务器上的数据进行备份的自动化操作。具体实现的步骤如下: 1. 首先,我们需要确定备份的目标路径,可以选择本地硬盘、网络存储设备或者云存储服务。在脚本中,我们可以设置一个变量来存储备份路径的地址。 2. 然后,我们需要使用shell的一些命令来进行备份操作。通常可以使用tar命令对数据进行打包和压缩操作,并将其保存到备份路径中。在脚本中,我们可以使用`tar -czvf`命令来实现打包和压缩数据,`-c`表示创建新的备份文件,`-z`表示使用gzip压缩,`-v`表示显示详细操作信息,`-f`表示指定备份文件的名称。 3. 备份完成后,可以添加一些文件操作命令,如移动、删除、重命名等,以便对备份文件进行管理。例如,我们可以使用`mv`命令将备份文件移动到指定的目录中。 4. 为了实现定期备份,我们可以使用cron服务来定时执行备份脚本。通过编辑cron表达式,可以设置备份的间隔时间和执行时间。 总的来说,全网服务器数据备份shell脚本需要确定备份路径、使用tar命令压缩数据、管理备份文件,并结合cron服务实现定时备份。此外,为了保证备份的可靠性,可以考虑在备份脚本中添加日志记录和错误处理等功能,以便监控备份过程中的任何异常情况。 ### 回答3: 全网服务器数据备份shell脚本可以使用以下步骤进行实现: 1. 首先,我们需要创建一个新的脚本文件,例如backup.sh,并在文件开头添加#!/bin/bash来指定使用bash作为脚本的解释器。 2. 确定要备份的目标服务器,可以使用ssh命令远程登录到服务器。在脚本中添加ssh登录命令,例如:ssh user@serverIP,其中user是登录服务器的用户名,serverIP是服务器的IP地址。 3. 在登录到服务器之后,我们需要使用rsync命令来进行文件同步和备份rsync可以通过SSH协议安全地实现数据传输。在脚本中添加rsync命令,例如:rsync -avz --progress source_directory destination_directory,其中source_directory是要备份的目录,destination_directory是备份目标目录。 4. 可以使用tar命令创建一个压缩文件,将备份数据打包起来以便于传输或存储。在脚本中添加tar命令,例如:tar -zcvf backup.tar.gz backup_directory,其中backup_directory是备份目录。 5. 最后,可以选择将备份文件传输到另一个目标服务器或存储设备上。可以使用scp命令将备份文件从源服务器复制到目标服务器,例如:scp backup.tar.gz user@destinationIP:destination_directory,其中destinationIP是目标服务器的IP地址,destination_directory是目标目录。 以上是一个简单的全网服务器数据备份shell脚本示例。根据实际需求,可以根据需要调整和改进脚本中的命令和参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值