作用:
运行此脚本,传入一个参数,即
需要打包归档的文件夹的路径
,会在/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 * * * 运行脚本命令 需要归档的文件夹