Shell编写定时打包备份脚本

作用:

运行此脚本,传入一个参数,即需要打包归档的文件夹的路径,会在/root/archive/目录下生成.tar.gz压缩包

脚本:

#!/bin/bash
# 此脚本作用,将指定路径下的目录压缩打包,存放到相对路径下
#1、 首先判断脚本的输入参数是否是1
if [ $# -ne 1 ]
then 
	echo "执行脚本参数错误!参数应当为1个,作为归档目录名"
	# 退出脚本
	exit
fi

#2、从参数中获取目录名称
# 判断给定目录是否是目录
#判断是否是目录
[ -d $1 ]
# 如果不是目录
if [ $? -ne 0 ]
then
       	echo "给定参数不是一个存在的目录"
	exit
else
	echo "指定目录正确!"
fi

# 获取给定目录的绝对路径 和 目录名称
#命令替换,或者basename 命令的返回值
#截取目录名称
DIR_NAME=$(basename $1 .sh )
#截取目录的父目录的绝对路径
#$(dirname $1)为目前的前缀,可能为相对路径
DIR_PATH=$(cd $(dirname $1); pwd)

echo "目录名称:"$DIR_NAME
echo "目录的路径:"$DIR_PATH

#获取当前的日期
DATE=$(date +%Y%m%d)

#定义生成的归档名称
#archive_目录名称_日期.tar.gz
FILE=archive_${DIR_NAME}_$DATE.tar.gz

#如果指定存放归档的目录不存在,则创建出来
DEST=/root/archive/$FILE
#如果指定目录/root/archive 不存在,则创建
[ -d /root/archive/ ]
if [ $? -ne 0 ]
then
	echo "存放归档文件的目录不存在,自动创建.."
	mkdir /root/archive
	echo "存放归档文件的目录创建成功!"
fi

#开始归档
echo "开始归档.."
echo


#被归档的文件夹
[ $DIR_PATH = "/" ] && PACKAGE_FILE=/$DIR_NAME || PACKAGE_FILE=$DIR_PATH/$DIR_NAME

#压缩打包指定目录
echo "被压缩的文件夹:"$PACKAGE_FILE
echo
echo "目标路径:"$DEST
echo
echo "开始压缩文件夹.."
tar -czf $DEST  $PACKAGE_FILE

if [ $? -eq 0 ]
then 
	echo 
	echo ""归档成功!
	echo "存放路径为:$DEST"
	echo
else
	echo "归档出现问题!"
	echo
fi
exit

开启定时任务

crontab -e
0 0 * * * 运行脚本命令 需要归档的文件夹

eg:

Shell编写定时打包备份脚本_第1张图片

定时任务:

在这里插入图片描述

你可能感兴趣的:(Linux,linux,ubuntu,服务器,shell)