Linux脚本:虚拟机上,定时任务批量移动指定文件到另一目录

1.序言

今日因一线上对账文件系统所生成的数据文件过多过大,逐日累计已达到几十T,服务器磁盘容量告急,所以需要弄个服务器脚本,将距离当前日期6个月之前的文件,全部备份转移到另一个目录下。

2.执行脚本

2.1编写移动文件脚本

创建脚本文件

touch movefile.sh 

脚本具体内容如下:

#!/bin/sh
find /data/source -mtime +180 -type d -name "test*" -exec mv {} /opt/target  \;

脚本内容注释:find就是查找,找到/data/source这个目录下,所有当前时间180天之前的(-mtime +180),类型为目录(-type d),名称包含test前缀(-name "test*")的所有目录,移动(mv)到/opt/target 目录下;

※ {}两边一定要留空格,且最后的\是必须要有的,否则会报错!

chmod a+x movesftp.sh          #给脚本赋执行权限

 

2.2设置定时任务

两种方式,一是在/etc/crontab中添加定时任务执行语句:

Linux脚本:虚拟机上,定时任务批量移动指定文件到另一目录

另一种是在定时任务列表中,直接编辑。使用如下命令:

crontab -l      #查看任务列表

crontab -e     #编辑任务列表

Linux脚本:虚拟机上,定时任务批量移动指定文件到另一目录

保存后,使用命令

service crond restart

如此就设置定时任务完成啦。但有一点必须谨慎,就是在执行定时任务列表操作保存时,会有提示告知,保存的定时任务命令必须正确,否则有错误就不能保存成功,且会影响或使之前其他的定时任务命令丢失失效!

还可以检查一下,定时任务是否是开机自启,方式服务器重启后失效!

chkconfig  --list crond               --查看crond是否开机自动启动

chkconfig  --level 35 crond on  --设置crond开机自动启动

目前我这边的文件已经在慢慢转移当中,但是几十T的文件,可不是一会就能转移完成的,只能慢慢等待了。。