您的位置:首页 > 运维架构 > Shell

shell 最简单最牛逼的备份脚本!!

2017-04-25 10:11 323 查看


#红色方框里为脚本调用格式,下面来看看我用这个脚本实现的功能



通过上图搭建可能会发现一个问题,也就是备份机2为什么不直接从源获取备份文件,我就和大家说说为什么要这么做,主要因为源服务器是线上服务器而备份机2是房子在公司的一台服务器。源服务器打包压缩文件会需要很长时间完事以后还要向备份机1传输备份文件,源打包压缩是从 凌晨2点开始直到传输到备份1完毕 需要四个小时左右,也就是到了早上六点,既然到了早上六点可能就会有用户访问网站了那么就要保正源服务器只为用户处理请求。所以备份机2就不能再去向源请求备份文件了。至于备份机2什么时间段向备份机1去请求数据就根据公司的上班时间安排吧,最好错开上班时间,因为下载数据会占用很大网络带宽。

之前忘记把脚本代码粘出来现在给补上;

#!/bin/bash

#/www/shell/backups.sh test_ /www/backups/mysql/ /www/mysql/3306/data/test/ 7 backups/mysql/

Prefix=$1 #获取备份文件名前缀 如:test_ 或 mysql_(作用是标示备份文件来源)

Backups_dir=$2 #获取用户输入的保存备份文件的目录

Backup_dir=$3 #获用户输入的源目录(需要备份的目录)

Retention_days=$4 #获取用户输入的文件生成时间距今n天以前

Remote_dir=$5 #获取用户输入的rsync项目及目录

Backup_date=`date +"%Y%m%d"` #获取当前时间作为备份文件名

cd ${Backup_dir} #cd 到源文件目录

tar zcvf ${Backups_dir}${Prefix}${Backup_date}.tar.gz * > /dev/null #打包压缩备份文件

echo "${Backups_dir}${Prefix}${Backup_date}.tar.gz" > ${Backups_dir}/backups.log #将备份文件位置目录写入日志文件,方便远程服务器读取目录位置以及备份

/usr/bin/rsync  -vzrtopg --password-file=/etc/rsyncd.pas ${Backups_dir}${Prefix}${Backup_date}.tar.gz Harry@10.10.10.74::${Remote_dir} > /dev/null #使用rsync传输到远程服务器

find ${Backups_dir} -type f -mtime +${Retention_days}|xargs -i{} rm -f {} > /dev/null #使用find按照时间查找符合条件的备份文件被删除(这里采用 +n 至今n天以前生成的文件)

如有什么不明白的请留言,我会定期查看并回复。 本人文科不好请多多谅解    喷子绕路
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell