linux备份脚本查看,Linux下Shell 备份脚本集合

Linux下Shell 备份脚本集合

说到Shell大家都不陌生,Shell是Linux下批处理脚本文件,类似windows下的Vbs脚本等等,能协助我们完成一些自动化的任务,我们前面也介绍了一些Shell脚本协助我们完成了一些计划任务,当然说计划任务也不对,是通过计划任务来调用shell脚本来完成一些自动化任务。废话不多说了,来点实际的,今天呢,我们主要介绍的是环境还是工作中遇到的问题,通过远程来完成一些还原任务,

1.首先是,我们需要将本地备份目录下的Weaver.proternt文件定时还原覆盖到指定目录下;

将/OAFS/Bkfiles/abc.txt文件还原到本地的/OAFS/WEAVER/ecology/abc.txt#!/bin/bash

BK_PROFEAM=/OAFS/Bkfiles/abc.txt

LOCAL_PROFEAM=OAFS/WEAVER/ecology

function copy() {

`which cp` -rf $BK_PROFEAM $LOCAL_PROFEAM

}

copy

编写后,我们需要chmod 770 xxxx

2. 我们需要将本地/OAFS/WEAVER_BACKUP目录下的备份压缩文件定时解压缩及覆盖到远程服务器192.168.6.38下的/OAFS目录下,

如果目标存在,我们就需要解压覆盖操作。

27bd4db41afc971a9f4dabfbe6490d2f.png#!/bin/bash

LOCALBAKDIR=/OAFS/WEAVER_BACKUP

RMTRESTDIR=/OAFS

RMT_HOST=192.168.6.38

RMT_USER=root

RMT_CMD="$(which ssh) $RMT_USER@$RMT_HOST"

function is_alive() {

`which ping` -c 4 $RMT_HOST >/dev/null 2>&1

if [ "$?" -ne 0 ]; then

echo 2

else

echo 0

fi

}

function mktmpdir() {

$RMT_CMD mkdir -p /tmp/OAFS

}

function rmvtmpdir() {

$RMT_CMD rm -rf /tmp/OAFS/*

}

function get_last_targz() {

echo $(ls -lt $LOCALBAKDIR | awk {'print $9'} |grep -v ^$ |head -n 1)

}

function copy() {

yum install -y openssh-clients >/dev/null 2>&1

$RMT_CMD yum install -y openssh-clients >/dev/null 2>&1

scp -q $LOCALBAKDIR/$(get_last_targz) $RMT_USER@$RMT_HOST:/tmp/OAFS/

$RMT_CMD tar zxvf /tmp/OAFS/$(get_last_targz) -C $RMTRESTDIR

}

if [ "$(is_alive)" -eq 0 ]; then

mktmpdir

copy

rmvtmpdir

else

echo "$RMT_HOST can not be accessed via port 22, please check"

fi

需要注意:因为是远程服务器,我们执行脚本一般是需要使用密码进行验证的,由于是自动化任务,所以我们不能输入密码,所以我们需要使用ssh-key进行验证;

所以我们需要在运行脚本的服务器上执行注册秘钥文件:ssh-keygen -t rsa      回车

167c984b2cc7dd9d7ff69772702f32be.png

创建目录,认证目录;然后一路回车

12e1e7be5e29d0612978a2a1549aca38.png

在/root/.ssh 目录下生成了一对密钥文件

id_rsa   私钥

id_rsa.pub     公钥

e4408619805cad3946e9315551942765.pngssh-copy-id ipaddress

只在脚本执行的机器上;会自动将公钥拷贝到目标服务器上;

be62b5631549f37fceaa59ff04bdcbd2.png

这样运行脚本就可以远程拷贝数据了;

3.我们将本地/OAFS/files/pdf文件下的所有内容远程拷贝及覆盖到目标文件夹/OAFS/pdf;#!/bin/bash

RMT_HOST=192.168.6.38

RMT_USER=root

RMT_CMD="$(which ssh) $RMT_USER@$RMT_HOST"

LOCAL_PDF=/OAFS/files/pdf

RMT_PDF=/OAFS/pdf

function is_alive() {

`which ping` -c 4 $RMT_HOST >/dev/null 2>&1

if [ "$?" -ne 0 ]; then

echo 2

else

echo 0

fi

}

function copy() {

scp -q -r $LOCAL_PDF/* $RMT_USER@$RMT_HOST:$RMT_PDF

}

if [ "$(is_alive)" -eq 0 ]; then

copy

else

echo "$RMT_HOST can not be accessed via port 22, please check"

fi

如果我们需要对操作的结果进行log记录,我们需要添加对应的判断即可#!/bin/bash

RMT_HOST=192.168.6.38

RMT_USER=root

RMT_CMD="$(which ssh) $RMT_USER@$RMT_HOST"

LOCAL_PDF=/OAFS/files/pdf

RMT_PDF=/OAFS/pdf

function is_alive() {

`which ping` -c 4 $RMT_HOST >/dev/null 2>&1

if [ "$?" -ne 0 ]; then

echo 2

else

echo 0

fi

}

function copy() {

scp -q -r $LOCAL_PDF/* $RMT_USER@$RMT_HOST:$RMT_PDF

if [ "$?" -eq 0 ]; then

echo "$(date +%Y-%m-%d_%H:%M:%S) - copy $LOCAL_PDF from localhost to $RMT_HOST:$RMT_PDF is successfull" >>/var/log/pdfcopy.log

else

echo "$(date +%Y-%m-%d_%H:%M:%S) - copy $LOCAL_PDF from localhost to $RMT_HOST:$RMT_PDF is failed" >>/var/log/pdfcopy.log

fi

}

if [ "$(is_alive)" -eq 0 ]; then

copy

else

echo "$RMT_HOST can not be accessed via port 22, please check"

fi

通过比对我们知道,就是在copy的函数里面添加了两句if [ "$?" -eq 0 ]; then

echo "$(date +%Y-%m-%d_%H:%M:%S) - copy $LOCAL_PDF from localhost to $RMT_HOST:$RMT_PDF is successfull" >>/var/log/pdfcopy.log

else

echo "$(date +%Y-%m-%d_%H:%M:%S) - copy $LOCAL_PDF from localhost to $RMT_HOST:$RMT_PDF is failed" >>/var/log/pdfcopy.log

fi

执行结果,我们可以查看log;

cat /var/log/pdfcopy.log

44e8c862f1c6975a1e71184b30efd9fe.png

最后我们可以通过crontab -e进行定义计划任务进行执行;

注:如果当前服务器没有crontal命令,我们需要安装;yum install crontalscrontab –e 的格式我们上一次有介绍;所以就不多介绍了,我们简单的说几个列子即可

分别为:

每天晚上23:10分执行脚本;

每周5的23:30执行脚本和每周6的1:10执行脚本

4edb01545ebedf754433a1c2424b6ef6.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值