Skip to content

需求

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

实现

sh
#!/bin/bash

# 参数个数是否为 1 个
if [ $# -ne 1 ]
then
  echo "参数个数不正确,必须为 1 个!"
  exit
fi

# 判断目录是否存在
if [ -d $1 ]
then
  echo
else
  echo "目录不存在!"
  exit
fi

# 获取目录名和目录的绝对路径
dir_name=$(basename $1)
dir_path=$(cd $(dirname $1); pwd)

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

# 归档文件名称
dest=/root/archive/archive_${dir_name}_$date.tar.gz

# 开始归档
echo "开始归档..."
tar -czf $dest ${dir_path}/${dir_name}

if [ $? -eq 0 ]
then
  echo "归档成功"
  echo "归档文件为: $dest"
else
  echo "归档失败"
fi

exit

crontab -e 0 2 * * * /root/sh/daily_archive.sh /root/sh