首页 > 代码库 > 文件移动脚本
文件移动脚本
脚本功能:将指定目录多少天前的文件移动到目标目录并保持结构不变
应用场景:用于移走服务器中无需保留的老旧数据(笔者是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
文件移动脚本
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。