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

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

通过上图搭建可能会发现一个问题,也就是备份机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天以前生成的文件)


如有什么不明白的请留言,我会定期查看并回复。 本人文科不好请多多谅解    喷子绕路

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值