清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
#!/bin/bash
#Author: Castle Liu
#Date: 2014/06/04
#Desc: merge files from a given dir,files should start with ${_BASE_NAME}
#Usage: mergeFile -D[-d] [-c] -[-m]
_YESTERDAY=`date -d yesterday +"%Y%m%d"`
_WORK_D=""
_DEFAULT_DIR="${_WORK_D}${_YESTERDAY}"
_BACKUP_DIR="${_WORK_D}"`date -d yesterday +"%Y%m"`
_BASE_NAME=""
_FULL_NAME="${_BASE_NAME}.${_YESTERDAY}"
_HEADER='date +"%F %T"'
_LOG_TMP=''
###func###
#print
#echo strings in a more confertable way
print(){
string=$1
echo "`eval ${_HEADER}` ${string} "
}
#help
#print help info
help() {
cat <<EOF
-d mandetory,conflict with [-D] option,specify the dir that hold the files to be merged.
-D mandetory,conflict with [-d] option,use the default dir,
-c optional,compress the file mergeed.
-m optional,move the file mergeed to backup dir,and the dir given(or default dir) will be delete.
-h print this info.
EOF
}
#error_handler
#exit function for the script
error_handler(){
error_code=$1
error_detail=$2
level=$3
print "error_code: ${error_code}"
print "error_detail: ${error_detail}"
if [[ ${level} -gt 3 ]];then
pmail "${error_detail}" "${_LOG_TMP}"
print "Sended excution log to Admin."
fi
if [[ ${level} -eq 2 ]];then
print "Serious error,excution will be abord."
exit ${quit_or_not}
fi
}
#targz
#use tar -czvf to compress a file
targz(){
file=$1
dir=`pwd`
cd `dirname ${file}`
print "Compressing file:${file}"
tar -czvf `basename ${file}`.tar.gz `basename ${file}` > /dev/null
rm -rf `basename ${file}`
print 'done.'
cd ${dir}
}
#merge_file
#pass in a dirname
merge_file(){
dir=$1
_pwd=`pwd`
cd ${dir}
print "Creating file:${_FULL_NAME}"
touch ${_FULL_NAME}
count=`ls ${_BASE_NAME}*.txt|wc -l`
if [[ ${count} -gt 0 ]];then
ls ${_BASE_NAME}*.txt|while read file
do
if [[ "${file}" != "EOF" ]];then
print "Hanlering file:${file}"
cat ${file} >> ${_FULL_NAME}
rm -rf ${file}
fi
done
print "File created."
if [[ ${_COMPRESS} ]];then
targz "${_FULL_NAME}"
fi
if [[ ${_MOVE_TO_BACKUP_DIR} ]];then
mv "${_FULL_NAME}.tar.gz" ${_BACKUP_DIR}
if [[ $? -eq 0 ]];then
export _DELETE_DIR=true
fi
fi
else
print "There is no required file in dir:${_DIR}"
error_handler "002" "no_required_file" 2
fi
cd ${_pwd}
}
###Main###
#parsing args
while getopts "d:cmD" arg
do
case ${arg} in
d)
export _DIR="${OPTARG}"
export _USE_DIR=true
;;
c)
export _COMPRESS=true
;;
m)
export _MOVE_TO_BACKUP_DIR=true
;;
D) export _USE_DEFAULT=true
;;
h) help
exit 0
;;
?)
error_handler 001 "param_error" 2
;;
esac
done
print "MergeFile start..."
if [[ ${_USE_DIR} ]];then
print "Using dir:${_DIR}"
if [[ -d ${_DIR} ]];then
name=`basename ${_DIR}`
export _FULL_NAME=${_BASE_NAME}.${name}
export _BACKUP_DIR=${_WORK_D}${name:0:6}
#Create backup dir if not exists.
if [[ ! -d ${_BACKUP_DIR} ]];then
mkdir -p ${_BACKUP_DIR}
fi
merge_file ${_DIR}
if [[ ${_DELETE_DIR} ]];then
print "Deleting dir:${_DIR}"
rm -rf ${_DIR}
fi
else
print "DIR not exists,pls check."
error_handler "003" "dir_not_exists." 2
fi
elif [[ ${_USE_DEFAULT} ]];then
print "USing Default dir:${_DEFAULT_DIR}"
#Create backup dir if not exists.
if [[ ! -d ${_BACKUP_DIR} ]];then
mkdir -p ${_BACKUP_DIR}
fi
if [[ -d ${_DEFAULT_DIR} ]];then
merge_file ${_DEFAULT_DIR}
if [[ ${_DELETE_DIR} ]];then
print "Deleting dir:${_DEFAULT_DIR}"
rm -rf ${_DEFAULT_DIR}
fi
else
print "Default dir not exists,pls check."
error_handler "004" "default_dir_not_exists" 3
fi
else
error_handler 005 "param_error" 2
fi