day34 rsync的大作业

33 阅读4分钟

只有你真正的是考过,你才知道中间是多么的痛苦,但是成果是美好的 所以说,路虽远,行则将至。 -----加油吧yzk

**## 客户端需求

客户端需求:
1.客户端每天凌晨1点在服务器本地打包备份(/etc目录和/var/log目录) 
2.客户端备份的数据必须存放至以 "主机名_ip地址_当前时间" 命名的目录中 
3.客户端最后通过rsync推送本地已经打包好的备份文件至backup服务器 
4.客户端服务器本地保留最近7天的数据,避免浪费磁盘空间

注意:所有服务器的备份目录必须都为/momo

先把大的任务拆解成小的任务,思考解决的办法,然后在综合操作,写成脚本----->这里注意备份的数据的源文件用 相对的路径

最后定时任务,执行该脚本

  1. 打包备份

    cd / && tar -zcf /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F)/etc.tgz etc
    
    cd / && tar -zcf /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F)/log.tgz var/log
    
  2. 文件夹的命名的要求

    "主机名_ip地址_当前时间"
    $(hostname)
    $(ifconfig eth0 | awk 'NR==2{print $2}')
    $(date +%F)
    ​
    mkdir -p /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F)
    
  3. 删除过期的文件

    find / -type f -mtime  +7 -delete
    
  4. 整合脚本

    #!/bin/bash #1为了防止脚本无法执行,定义path的变量这里注意是大写
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    ​
    #2创建目录,注意目录名的规则递归的创建 -p
    mkdir -p /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F)
    ​
    #3创建相对应的文件
    cd / && tar -zcf /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F)/etc.tgz etc
    ​
    cd / && tar -zcf /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F)/log.tgz var/log
    ​
    #4删除过期的文件
    find / -type f -mtime  +7 -delete
    

    5.rsync推送本地已经打包好的备份文件至momo服务器

    在客户端环境变量上配置密码
    export RSYNC_PASSWORD=666
    ​
    ​
    rsync -az /backup/  momo01@rsync-41::momo
    ​
    

    6.最后的整理脚本最终版

    #!/bin/bash #1为了防止脚本无法执行,定义path的变量这里注意是大写
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    ​
    #2创建目录,注意目录名的规则递归的创建 -p
    mkdir -p /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F)
    ​
    #3创建相对应的文件
    cd / && tar -zcf /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F)/etc.tgz etc
    ​
    cd / && tar -zcf /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F)/log.tgz var/log
    ​
    ​
    #4rsync发送数据以及环境变量
    export RSYNC_PASSWORD=yzk666
    rsync -avzP /backup/ momo01@rsync-41::momo
    ​
    #4删除过期的文件
    find /backup -type f -mtime  +7 -delete
    ​
    #对数据进行校验,生成校验的文件
    md5sum /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F)/*.tgz > /backup/$(hostname)_$(ifconfig eth0 | awk 'NR==2{print $2}')_$(date +%F)/all_data_md5.txt
    ​
    

    7.调试脚本

    shell 提供啦-x参数可以看到脚本的执行,不会真正的数据的改动。

    bash -x my_rsync.sh
    

    8.定时的任务

    这个可以暂时不管
    

服务端需求

服务端需求:
1.服务端部署rsync,用于接收客户端推送过来的备份数据 
2.服务端需要每天校验客户端推送过来的数据是否完整 
3.服务端需要每天校验的结果通知给管理员 
4.服务端仅保留6个月的备份数据,其余的全部删除 
​

服务端的任务的拆解

1.服务端部署rsyncd服务用于接受客户端传递过来的数据

1.写配置文件
[root@rsync-41 /]# cat > /etc/rsyncd.conf <<EOF
uid = www    
gid = www 
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = momo01
secrets file = /etc/rsync.passwd 
log file = /var/log/rsyncd.log
#####################################
[momo]
comment = yzk.cn about rsync
path = /momo
​
[backup]
comment = yuchaoit.cn about rsync
path = /backup
​
EOF
​
#2创建文件夹的配置信息
mkdir -p /momo
chown -R www:www momo
touch /etc/rsync.passwd
chmod 600 etc/rsync.passwd
​
#3查看用户和密码
[root@rsync-41 /]# cat /etc/rsync.passwd 
momo01:yzk666
也可以创建用户和密码
echo 'momo01:yzk666' > /etc/rsync.passwd
​
​
#4重启服务
systemctl restart rsyncd
  1. 修改服务端的rsync的脚本

    #!bin/bash
    ​
    ​
    #1.安装rsync服务器
    ​
    yum install rsync -y
    ​
    #2.写配置文件
    cat > /etc/rsyncd.conf <<EOF
    uid = www    
    gid = www 
    port = 873
    fake super = yes
    use chroot = no
    max connections = 200
    timeout = 600
    ignore errors
    read only = false
    list = false
    auth users = momo01
    secrets file = /etc/rsync.passwd 
    log file = /var/log/rsyncd.log
    #####################################
    [momo]
    comment = yzk.cn about rsync
    path = /momo
    ​
    [backup]
    comment = yuchaoit.cn about rsync
    path = /backup
    ​
    EOF
    ​
    #3.创建配置文件定义的信息
    mkdir -p /momo
    chown -R www:www momo
    touch /etc/rsync.passwd
    chmod 600 /etc/rsync.passwd
    ​
    #4创建用于链接用户和密码
    echo 'momo01:yzk666' > /etc/rsync.passwd
    #5重启服务
    systemctl restart rsyncd
    ​
    #6验证数据的完整MD5
    

验证脚本的完整性

vim install_rsync.sh
bash -x install_rsync.sh
  1. 校验数据的完整性
  2. 邮件的通知
  3. 删除过期的文件
find /momo -type f -mtime +180 -delete
  1. 脚本的汇总 2.**