shell脚本的归档文件

一、问题

实际生产应用中,往往需要对重要数据进行归档备份。

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

这里用到了归档命令:tar

后面可以加上-c 选项表示归档,加上-z 选项表示同时进行压缩,得到的文件后缀名 为.tar.gz。

二、脚本实现如下:

[root@hadoop scripts]# vim daily_archive.sh 
#!/bin/bash

#首先判断输入参数个数是否为1
if [ $# -ne 1 ]
then
	echo "参数个数错误!应该输入一个参数,作为归档目录名"
	exit
fi

#从参数中获取目录名称
if [ -d $1 ]
then
	echo
else
	echo
	echo"目录不存在"
	echo
	exit
fi

DIR_NAME=$(basename $1)
DIR_PATH=$(cd $(dirname $1); pwd)

#获取当前日期
DATH=$(date +%y%m%d)

#定义生成的归档文件名称
FILE=archive_${DIR_NAME}_$DATE.tar.gz
DEST=/root/archive/$FILE

#开始归档目录文件

echo "开始归档..."
echo

tar -czf $DEST $DIR_PATH/$DIR_NAME    #-c表示归档,-z表示压缩,-f表示可视化

if [ $? -eq 0 ]
then
	echo
	echo "归档成功!"
	echo "归档文件为:$DEST"
	echo
else
	echo "归档出现问题!"
	echo
fi

exit
[root@hadoop scripts]# chmod u+x daily_archive.sh 
[root@hadoop scripts]# mkdir /root/archive
[root@hadoop scripts]# ./daily_archive.sh ../scripts

开始归档...

tar: Removing leading `/' from member names

归档成功!
归档文件为:/root/archive/archive_scripts_.tar.gz

定时装置,每天凌晨2点自动运行这个脚本

[root@hadoop scripts]# crontab -l    #没有定时装置
no crontab for root
[root@hadoop scripts]# crontab -e    #编辑定时脚本
0 2 * * * /root/scripts/daily_archive.sh /root/scripts    #02***表示凌晨2点,日月年未定义是每一天
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lambda-小张

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值