实际生产应用中,往往需要对重要数据进行归档备份。
需求:实现一个每天对指定目录归档备份的脚本,输入一个目录名称(末尾不带/
),将目录下所有文件按天归档保存,并将归档日期附加在归档文件名上,放在/root/archive
下。
完整Shell脚本:
#!/bin/bash
# 首先判断参数是否为1个
if [ $# -ne 1 ]
then
echo "参数个数有误,仅为1个目录名,用作为归档目录名i"
exit
fi
# 判断参数目录是否存在
if [ -d $1 ]
then
echo
else
echo
echo "目录不存在!"
echo
fi
# 获取文件的名称&路径
DIR_NAME=$(basename $1)
DIR_PATH=$(cd $(dirname $1); pwd)
# 获取当前日期
DATE=$(date +%y%m%d)
# 定义生成的归档文件名称
FILE=archive_${DIR_NAME}_$DATE.tar.gz
# 归档存储路径
DEST=/root/archive/$FILE
# 开始归档目录文件
echo "开始归档..."
echo
# 归档:tar 选项 归档存储路径 归档的内容
tar -czf $DEST $DIR_PATH/$DIR_NAME
if [ $? -eq 0 ]
then
echo
echo "归档成功!"
echo "归档文件为:$DEST"
echo
else
echo "归档失败!"
echo
fi
exit
需要创建存储目录:
[root@d Shell]# mkdir /root/archive
试运行:
创建crontab
系统定时任务:
[root@d Shell]# crontab -e 编辑crontab定时任务
[root@d Shell]# crontab -l 查询crontab任务
[root@d Shell]# crontab -r 删除当前用户所有的crontab任务
0 2 * * * /home/zyx/Shell/daily_archive.sh /root/scripts