首页>>帮助中心>>国外VPS shell文件移动脚本

国外VPS shell文件移动脚本

2024/12/7 38次
国外VPS shell文件移动脚本
脚本功能:将指定目录多少天前的文件移动到目标目录并保持结构不变

应用场景:用于移走服务器中无需保留的老旧数据(笔者是ftp服务器环境)

使用说明:修改脚本中的源目录和目标目录且修改移动多少天前的数据

脚本代码:

#!/bin/bash
wdir="/ftp" #源目录
bdir="/mvbackup/ftp" #目标目录

fl="/tmp/filelist"
okl="/tmp/oklist"
erl="/tmp/errlist"
dl="/tmp/dirlist"
mvlog="/var/log/mvfile.log"
mdlog="/var/log/mkdir.log"

#enter working(source) director
cd $wdir

#create source file list
if [ -f $fl ]; then
rm -f $fl
fi

find -mtime +300 -type f | grep -v "\/\."> $fl
# ^300天前的数据

#filter source file list
if [ -f $okl ]; then
rm -f $okl
fi

if [ -f $erl ]; then
rm -f $erl
fi

if [ ! -f $fl ]; then
echo stop:1
exit 1
fi

oldIFS=$IFS
IFS=$'\n'
for i in $(cat $fl)
do
if [ -f $i ]; then
echo "$i" >> $okl
else
echo "$i" >> $erl
fi
done
IFS=$oldIFS

#create traget director list
if [ -f $dl ]; then
rm -f $dl
fi

if [ ! -f $okl ]; then
echo stop:2
exit 2
fi
cat $okl | awk -F'/' '{$1="";NF-=1;OFS="/";print}' | sort -u > $dl

#create traget director
if [ ! -f $dl ]; then
echo stop:3
exit 3
fi

oldIFS=$IFS
IFS=$'\n'
for i in $(cat $dl)
do
if [ ! -d "$bdir$i" ]; then
mkdir -p "$bdir$i"
if [ ! $? = 0 ]; then
echo "$bdir$i" >> $mdlog
fi
#echo $bdir$i
fi
done
IFS=$oldIFS

#move file to traget folder
if [ ! -f $okl ]; then
echo stop:4
exit 4
fi

oldIFS=$IFS
IFS=$'\n'
for i in $(cat $okl)
do
if [ -f "$i" ]; then
j="$bdir$(echo $i | awk -F'/' '{$1="";NF-=1;OFS="/";print}')"
fi
if [ -d "$j" ]; then
echo s:"$i"
echo d:"$j"
mv -f "$i" "$j"
if [ ! $? = 0 ]; then
echo "$i" >> $mvlog
fi
fi
done
IFS=$oldIFS

购买使用一诺网络美国VPS,可以极大降低初创企业、中小企业以及个人开发者等用户群体的整体IT使用成本,无需亲自搭建基础设施、简化了运维和管理的日常工作量,使用户能够更专注于自身的业务发展和创新。美国VPS低至49元/月,购买链接:https://www.enuoidc.com/vpszq.html?typeid=3