需求
实现一个每天对指定目录归档备份的脚本,输入一个目录名称(末尾不带/),将目录下所有文件按天归档,并将归档日期附加在归档文件名上,放在/root/archive下。
代码实现
#!/bin/bash# 首先判断输入参数个数是否为1if [ $# -ne 1 ]thenecho "参数个数错误!应该输入一个参数,作为归档目录名"exitfi# 从输入参数中获取目录名称if [ -d $1 ]thenechoelseechoecho "目录不存在"exitfiDIR_NAME=$(basename $1)DIR_PATH=$(cd $(dirname $1); pwd)# 获取当前日期DATE=$(date +%y%m%d)#定义生成的归档文件名称FILE_NAME=archive_${DIR_NAME}_$DATE.tar.gzDEST=/root/archive/$FILE_NAME#开始归档目录文件echo "开始归档..."echotar -czf $DEST $DIR_PATH/$DIR_NAMEif [ $? -eq 0 ]thenechoecho "归档成功!"echo "归档文件为:$DEST"elseecho "归档出现问题!"echofiexit
测试一下
加入定时任务
crontab -e
0 2 * * * /root/scripts/daily_archive.sh /root/scripts