linux定时任务授权指定目录,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中添加定时任务执行语句:

dd845874c2836ead041dbf90a42a83cc.png

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

crontab -l      #查看任务列表

crontab -e     #编辑任务列表

e017be417aa7e087546dc968856e3ea6.png

保存后,使用命令

service crond restart

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

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

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

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

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

重大坑点:因为此次的批量目录转移,我是通过日期来指定将180天之前的数据都转移到指定目录。但是有些目录还未使用(例如一个命名为20201201的目录,是预留给以后的数据文件使用的,但是其创建时间却是20190901),但因为创建时间较早,也被转移到了指定目录。发现后,我便再重新转回原地址。可是,悲剧发生了,我忽略了文件的所属用户及用户组,没有设置权限。导致后来线上业务的文件上传失败,完犊子。。。。。

解决办法:转移回原地址后,使用如下命令修改文件所属用户及用户组

chown -R 所属用户.用户组                     #修改文件、目录所属用户及用户组

chmod 755 目录名                                 #给指定目录分配读写执行权限(r: 可读, w: 可写, x: 可执行. r=4,w=2,x=1)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值