shell编程案例-文件定时归档

1.需求

实现一个每天对指定目录归档备份的 shell脚本,输入一个 目录名称(末尾不带/),将目录下所有的文件 按天数归档保存,并将 归档日期附加在归档文件名上,放在xxx目录下

2.代码展示

#!bin/bash
#判断当前输入的参数个数是否为1: $#: 获取参数个数, -ne: 不等于(表达式)
if [$# -ne 1]
then
    echo "参数个数错误!应该输入一个参数,作为归档目录名"
    exit
fi
#从输入参数中获取目录名称 -d: 目录; if [-d $1]: 判断输入的参数是不是一个目录
if [-d $1]
then
    echo
else
    echo #表示空行
    echo "目录不存在"
    echo
    exit
fi
#basename:文件名称
#$(xxx):命令替换操作
#$(basename $1): 文件替换,获取请求目录的文件名称
DIR_NAME=$(basename $1)
#cd 到目录,并获取绝对路径
DIR_PATH=$(cd $(dirname $1);pwd)

#获取当前日期
DATE=$(date+%y%m%d)
#定义生成的归档文件名称
FILE=archive_$(DIR_NAME)_$DATE.tar.gz
#要归档保存的文件名称
DEST=/root/archive/$FILE
#开始归档目录文件
echo "开始归档~~~"
echo
#c归档 z压缩 f可视化: tar -czf 要归档保存的文件名称 目标文件
tar -czf $DEST $DIR_PATH/$DIR_NAME
#if [$? -eq 0]: 判断前面的tar 命令是否执行成功
if [$? -eq 0]
then 
    echo
    echo "归档成功!"
    echo "归档文件为:$DEST"
else
    echo "归档出现问题"
    echo
fi
exit

给上面shell脚本加上对应权限

chmod u+x xxx.sh

3.定时任务

把上面shell脚本加入到定时任务

定时任务相关命令:

  • 查看当前系统的当时任务 crontab -l

  • 编辑系统定时任务 crontab -e

定时任务格式

分钟数 小时数 天数 月 星期几 脚本
0 2 * * * xx.sh xx目录

最后保存就可以了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值