我的机器作为Web开发服务器,每一小时备份一个压缩包出来,每天将昨天的压缩包移动到一个文件夹里面,写的脚本文件一直没解决周末不上班造成的问题。因为man date -d 里面没有详细的 STRING 解释。
今天参考了朽木不可雕的一篇文章,终于找到答案:
date -d “1 days ago” +%Y%m%d ,描述用”2 days ago”,”yesterday”,”tomorrow”.”next-day”,”last-day”,”last-month”,”next- month”,”next-year”也可。
于是我的daily_webbackup.sh这样写:
#!/bin/bash
basedir=/backup/webbackup/
prefix=web
suffix=$(date +%Y%m%d -d “yesterday”)
suffix1=$(date +%Y%m%d -d “2 days ago”)
suffix2=$(date +%Y%m%d -d “3 days ago”)
destdir=$basedir$prefix$suffix
destdir1=$basedir$prefix$suffix1
destdir2=$basedir$prefix$suffix2
if [ -e $destdir*.tar.gz ]; then
if [ ! -e $destdir ]; then
mkdir $destdir
fi
mv $destdir*.tar.gz $destdir/
elif [ -e $destdir1*.tar.gz ]; then
if [ ! -e $destdir1 ]; then
mkdir $destdir1
fi
mv $destdir1*.tar.gz $destdir/
elif [ -e $destdir2*.tar.gz ]; then
if [ ! -e $destdir2 ]; then
mkdir $destdir2
fi
mv $destdir2*.tar.gz $destdir/
fi
exit 0
由于是在/etc/cron.daily/里面运行,脚本没有 echo 任何信息。