Linux 定时任务crond 实例-文件备份

需求:服务器定期备份日志到指定目录下

#日志文件存放的目录
log_src_dir=/home/hadoop/logs/log/

在此目录下生成多个模拟日志,日志名称如access.log.20190316110829

1、定时上传,每分钟需要将日志上传
2、要获取1分钟之前的时间,根据年月\日\时分自动创建目录
(/usr/local/log/201903/16/1639)
3、读取日志文件的目录,判断是否有需要上传的文件,并备份到第二点要求的目录中

一 定时任务配置:

在etc目录下,执行 crontab -e

//每分钟执行一次:
插入:* * * * * root sh /home/hadoop/logs/a.sh

查看命令:
使用命令 crontab -u root -l可以查看当前定时任务 成功!

[root@VM_0_8_centos 1113]# crontab -u root -l
* * * * * root sh /home/hadoop/logs/a.sh

测试批处理是否正常运行:

把当前时间写入 hellow.txt 中:

#!/bin/sh
echo `date -d "-1 minute" +%Y%m/%d/%H%M` > /home/hadoop/logs/hello.txt

结果:

[root@VM_0_8_centos logs]# more hello.txt 
202003/21/1013
[root@VM_0_8_centos logs]# more hello.txt 
202003/21/1014

二 文件拷贝逻辑

#!/bin/sh

#判断log目录下是否有文件
if [ `ls -l /home/hadoop/logs/log/ | grep "^-" | wc -l` -gt 0 ]

then

echo "有文件!"
#创建目录
local="/usr/local/log/"
datetime=`date -d "-1 minute" +%Y%m/%d/%H%M`
path=$local$datetime

echo "即将创建的文件路径为:" $path

mkdir -p "$path"

echo "创建成功:$path"

#将log下新的文件上传到 上面创建的目录中去
mv /home/hadoop/logs/log/* $path

fi

其中:ls -l /home/hadoop/logs/log/ | grep "^-" | wc -l

grep ^- 过滤列表输出信息,只保留一般文件,如果要保留目录则为 ^d
wc -l 统计输出信息的行数

发布了107 篇原创文章 · 获赞 20 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/beishanyingluo/article/details/105007341
今日推荐