文件移动脚本

简介:

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

应用场景:用于移走服务器中无需保留的老旧数据(笔者是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,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
JavaScript 前端开发 Go
脚本
脚本
92 3
|
Shell Perl
杀死所有脚本
杀死所有脚本
49 1
|
Shell
shell脚本获取当前脚本的文件名
shell脚本获取当前脚本的文件名
196 0
|
运维
清理指定后缀名文件的 powerhsell 小脚本
工作日记:清理指定后缀名文件的 powerhsell 小脚本
69 0
|
XML JSON jenkins
OCLint静态代码检查脚本
OCLint是静态代码检查工具,用于检查代码质量
453 0
|
文字识别 搜索推荐 机器人
【分享 10 个日常使用的脚本】
【分享 10 个日常使用的脚本】
140 0