shellscript-5-定时备份一年前的文件,并创建软连接
脚本内容
#!/bin/bash
# author: yolo
# 有一个目录/data/file/ 目录下有数百个子目录
# 比如:/data/file/photo/ /data/file/mv/
# 再下一级以日期命名目录 /data/file/photo/20231101/
# 因为每天会生成一个新目录,由于磁盘 /data/ 快满了
# 需要将旧文件,一年以前的移动到目录 /data1/file/
# 示例: mv /data/file/photo/20220701 /data1/file/photo/20220701
# 移动后做软连接
# 示例: ln -s /data1/file/photo/20220701 /data/file/photo/20220701
# 写一个脚本 /data/file/ 目录下 所有都按照这样操作
# 脚本每天01:00 执行一次
# 注意:确保老文件移动成功才能做软连接,需要有日志
# 定义函数,调用函数记录日志
main(){
cd /data/file/
# 遍历
for dir in `ls`
do
echo $dir
# 遍历二层目录
# -maxdepth 1 当前目录 -type d 目录 -mtime +365 一年以前
for dir2 in `find $dir -maxdepth 1 -type d -mtime +365`
do
echo $dir2
# 移动文件 -a 使用递归 -R 使用相对路径
rsync -aR $dir2/ /data1/file/
if [ $? -eq 0 ]
then
# 如果同步成功, 删除原数据,做软连接
rm -rf $dir2
echo '/data/file/$dir2 移动成功'
# 软连接
ln -s /data1/file/$dir2 /data/file/$dir2 && echo "/data/file/$dir2 软连接创建成功"
else
echo "/data/file/$dir2 移动没成功"
fi
done
done
}
# 调用函数,并输出日志,日志每天一个文件
main &> /tmp/move_log_`date +%F`.log
# 1 函数方式定义日志用法