Backup and Delete

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

###############################################################################
#
# Author:
#       Joey Y Q Mei
#
# Date:
#       10 Dec 2012
#
# Description:
#       zip folder
#
# Usage:
#       Parameter 1: source folder path
#	Parameter 2: job id
#
# Sample:
#	BackupDelete.sh /hp/xxx/aaa jobId
#                       
###############################################################################


if [ $# -lt 2 ]
	then
      echo "Error: Please input the arguement:"
      echo "Example: zip_folder.sh /hp/xxx/aaa jobId"
      exit 1
fi

source_folder_path=$1
job_id=$2
timeStamp=`date +%Y%m%d`
source_folder_name=${source_folder_path##*/}
cd_folder_path=${source_folder_path%/*}
archive_folder=$cd_folder_path/Archive
keep_num=10

if [ ! -d "$source_folder_path" ]
	then
			echo ">>>>> Error: The folder <$source_folder_path> does not exist."
			exit 1
fi

if [ ! -d "$archive_folder" ]
	then
			echo ">>>>> Error: The folder <$archive_folder> does not exist."
			exit 1
fi

zip_folder_path=$cd_folder_path/Archive/$timeStamp
if [ ! -d "$zip_folder_path" ]
			then
						echo ">>>>> Add: dir <$zip_folder_path> "
		        mkdir $zip_folder_path
fi

cd $cd_folder_path
zip_file=$source_folder_name"_"$job_id.zip
zip -r $zip_folder_path/$zip_file $source_folder_name

#remove files function
function_rmfiles(){
	for file in `ls $1`
	do
		rm -r $1/$file
		echo ">>>>> Info: <$1/$file> has been removed."
	done
}

#clear source_folder_path files
if (( $? == "0"))
then
	echo ">>>>> Success: <$zip_folder_path/$zip_file> has been created."
	
	for folder in `ls $source_folder_path`
	do 
		if [ $folder = "Compare" ]
		then
			for subfolder in `ls $source_folder_path/$folder`
			do
				function_rmfiles $source_folder_path/$folder/$subfolder
			done
		else	
			function_rmfiles $source_folder_path/$folder
		fi
	done
else
	echo ">>>>> Error: Create <$zip_folder_path/$source_folder_name.zip> failed."
	exit 1
fi

#clear old backup folder
echo ">>>>> Info: Cleaning old folders."
signal=0
hasOld=0
while((signal!=1))
do
	backup_folders=`ls $archive_folder`
	arr_backup_folders=($backup_folders)
	count=${#arr_backup_folders[@]}
	
	if (( "$count" > "$keep_num"))
	then
			old_file=$archive_folder/${arr_backup_folders[0]}
			rm -rf $old_file
			hasOld=1
      echo ">>>>> Info: <$old_file> has been removed."
  else
  		signal=1
	fi
done
if(( "$hasOld" == "1"))
then
	echo ">>>>> Success: $archive_folder Old folders has been removed."
else
	echo ">>>>> Success: $archive_folder no old folders."
fi

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

相关文章

系ubuntu 下面打开终端输入:sudo apt-get install sendmail...
依家我有1个软件goagent目录(大家懂得) 放在/home/gateman/...
其实我想讲的是 cp -L关于-L参数的解释:-L, --dereferenc...
原地址:http://www.rjgc.net/control/content/content.php?...
chroot,即 change root directory (更改 root 目录)。在 li...
简单解析下, stdin就是标准输入, stdout就是标准。举个例子...