- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業務經營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯網協會理事單位
- 安全聯盟認證網站身份V標記
- 域名注冊服務機構許可:滇D3-20230001
- 代理域名注冊服務機構:新網數碼
腳本功能:將指定目錄多少天前的文件移動到目標目錄并保持結構不變
應用場景:用于移走服務器中無需保留的老舊數據(筆者是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
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP