文件移动脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件移动脚本相关的知识,希望对你有一定的参考价值。

脚本功能:将指定目录多少天前的文件移动到目标目录并保持结构不变

应用场景:用于移走服务器中无需保留的老旧数据(笔者是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


本文出自 “老谭linux集群博客” 博客,请务必保留此出处http://cmdschool.blog.51cto.com/2420395/1843962

以上是关于文件移动脚本的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse 中的通用代码片段或模板

如何将 View 类中的代码片段移动到 OnAppearing() 方法?

用片段替换时操作栏向下移动

导航抽屉活动:在按钮单击时从片段移动到片段

npm : 无法加载文件 D:softcodeProcess ode ode_global pm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.micr +(代码片段

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途