文件移动脚本

简介:

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

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

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

脚本代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/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  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  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  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









本文转自 tanzhenchao 51CTO博客,原文链接:http://blog.51cto.com/cmdschool/1843962,如需转载请自行联系原作者
相关文章
直接写文件名就可以执行脚本文件
要说明的几点: [root@uyha000207 bin]# echo $PATH/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:...
750 0
3D 脚本
引用: http://www.sc2mapster.com/assets/m3-export-plugin-3ds-max/ http://sc2.178.com/201007/71951269333.html
659 0
OCLint静态代码检查脚本
OCLint是静态代码检查工具,用于检查代码质量
491 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等