shell脚本练习五

目录下/root/data/att,该目录下有一百个子目录,如/root/data/att/sub_dir_1

再深入一层为日期命名的目录,如/root/data/att/sub_dir_1/2023-10-15

由于data目录所在磁盘块满了,所以要将老文件(一年以前的)挪到另外一个目录/root/data1/att下

挪完后,还需要做软链接

ln -s /root/data1/att/sub_dir_1 /root/data/att/sub_dir_1

要求/root/data/att所有目录都要做此操作,脚本每天10:00执行一次,无需考虑任务计划

要确保老文件成功挪到/root/data1/att下之后才能做软链接,需要有日志

1.创建大量目录shell

#!/bin/bash
#author:tongby
#version:t1
#date:2023-11-15
parent_dir="/root/data/att"
##姑且建100个目录
num_seq=$(seq 1 100)
for i in $num_seq:
do
        sub_dir="${parent_dir}/sub_dir_${i}"
        mkdir -p "${sub_dir}"
done

2.

#!/bin/bash
#author:tongby
#date:2023-10-15
#version:t1
main()
{
        cd /root/data/att
        for dir in `ls`
        do
                for dir2 in `find $dir -maxdepth 1 -type d -mtime +365`
                do
                        ##将目标目录下的文件同步到/root/data1/att/目录下,注意-R就可以自动创建目录结构
                        rsync -aR $dir2/ /root/data1/att/
                        if [ $? -eq 0 ]
                        then
                                ##同步成功将源文件目录删除
                                rm -rf $dir2
                                echo "/root/data/att/$dir2 移动成功"
                                ##做软链接
                                ln -s /root/data1/att/$dir2 /root/data/att/$dir2 && \
                                echo "/data/att/$dir2成功创建软链接"
                                echo
                        else
                                echo "/root/data/att/$dir2 未能移动成功"
                        fi
                done
        done

}
##调用函数,并将h输出写进日志,日志每一天一个
main &> /tmp/move_old_data_`date +%F`.log

当前日期完整格式输出

date +%F

查找文件目录层级

find dir -maxdepth num

自动级联创建目录层级

rsync -R

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值