归档文件
需求:
![](https://img-blog.csdnimg.cn/img_convert/5ee278074afd1eb444c50d4b9e825d58.png)
此处我将文本的路径更改了,使用的我自己的文件目录,迁移了一下
前置知识(不做拓展)
函数
特殊运算符
定时设置操作
路径获取操作
解压类指令
![](https://img-blog.csdnimg.cn/img_convert/a3c110d51615ce306372016e5f3b97a7.png)
主要思路:
首先理解脚本运行思路,利用终端传递目录参数
对目录参数进行判定,此处我用了两处判定,如果读者具备更好的思维,我觉得可以将这里的操作优化,我主要就是在这里为大家提供一个类似解决问题的思路
第一处判定:参数个数是否是合理(运用特殊运算符 $#)
第二处判定:参数是否合法,是否是预定义参数(参数现在的定义是目录)(运用特殊运算符-d )
如果上述条件合法满足
定义4大变量
文件目录名称
文件名称
时间
归档目标文件路径
归档目标文件名称
进行归档 使用tar -czf 目标路径 源路径
测试操作
![](https://img-blog.csdnimg.cn/img_convert/95f8e816a87248701af8eb8a7a29c5db.png)
查看目标路径
![](https://img-blog.csdnimg.cn/img_convert/129ba77cbe188e0d9fab68230ebc0fd4.png)
通过crontab -e 设置相关的定时操作
这里我设置的 每天两点进行文件归档
![](https://img-blog.csdnimg.cn/img_convert/2cf4781770d96929addcfdbe7df274dc.png)
下面附上脚本注释以及源代码,这个操作我觉得是比较考验
你对Linux文件路径的形式理解的
之前我对这类路径理解不是很深刻,这个demo弄了两次才成功,主要难点就在路径位置,其他就仁者见仁,智者见智了
![](https://img-blog.csdnimg.cn/img_convert/5a984a6e12ee35e38efaaefbe069a142.png)
代码
#!/bin/bash
#利用shell脚本实现按指定时间归档文件的操作
#判定传入的参数是否是一个
# $#此特殊运算符是用来测算有多少个参数传入的
if [ $# -ne 1 ]
then
echo "你所输入的参数是超过一个的,请重新输入"
exit
fi
# 判定当前的参数是否是目录
if [ -d $1 ]
then
#直接跳过此处,然后进行操作
echo
else
echo "你所输入的参数并不是目录"
exit
fi
#定义目标目录
#这里的操作需要重点理解;解析:传递到当前目录下面然后获取绝对路径名称
DIR_PATH=$(cd $(dirname $1); pwd)
DIR_NAME=$(basename $1)
#定义日期信息,日期年月日信息
DATE=$(date +%y%m%d)
#文件名称
FILE=fbcd_${DIR_NAME}_$DATE.tar.gz
#目标路径
DEST=/home/filecontain/$FILE
tar -czf $DEST $DIR_PATH/$DIR_NAME
if [ $? -eq 0 ]
then
echo "归档文件成功"
echo "文件目标地址为" $DEST
else
echo "归档文件失败"
exit
fi
欢迎浏览我的频道,我是一名热爱生活的程序员!