目录下/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