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中添加定时任务执行语句:
另一种是在定时任务列表中,直接编辑。使用如下命令:
crontab -l #查看任务列表
crontab -e #编辑任务列表
保存后,使用命令
service crond restart
如此就设置定时任务完成啦。但有一点必须谨慎,就是在执行定时任务列表操作保存时,会有提示告知,保存的定时任务命令必须正确,否则有错误就不能保存成功,且会影响或使之前其他的定时任务命令丢失失效!
还可以检查一下,定时任务是否是开机自启,方式服务器重启后失效!
chkconfig --list crond --查看crond是否开机自动启动
chkconfig --level 35 crond on --设置crond开机自动启动
目前我这边的文件已经在慢慢转移当中,但是几十T的文件,可不是一会就能转移完成的,只能慢慢等待了。。