134 lines
5.3 KiB
Bash
Executable File
134 lines
5.3 KiB
Bash
Executable File
#/bin/bash
|
||
|
||
data_ADD="./fileinfo.1.db"
|
||
#总数据库名
|
||
data_NEW="./fileinfo.2.db"
|
||
#新数据库名
|
||
|
||
merge_LOG="./merge.log"
|
||
#合并日志
|
||
merge_LIST="./merge.list"
|
||
|
||
function set_env(){
|
||
|
||
if [ -f $merge_LOG ];
|
||
then
|
||
rm $merge_LOG
|
||
fi
|
||
|
||
if [ -f $merge_LIST ];
|
||
then
|
||
rm $merge_LIST
|
||
fi
|
||
|
||
}
|
||
|
||
#获取新数据库中镜像信息存入到总数据库中
|
||
function get_into_iso(){
|
||
|
||
data_isomd5=`sqlite3 $data_NEW "select product_md5 from product;"`
|
||
|
||
data_isoname=`sqlite3 $data_NEW "select product_name from product;"`
|
||
data_isoversion=`sqlite3 $data_NEW "select product_version from product;"`
|
||
data_isoissue=`sqlite3 $data_NEW "select product_issue from product;"`
|
||
data_isoid=$(expr `sqlite3 $data_ADD "select product_id from product order by product_id desc limit 1;"` + 1)
|
||
|
||
sqlite3 $data_ADD "insert into product values ($data_isoid,'$data_isoname','$data_isoversion','$data_isomd5','$data_isoissue');"
|
||
|
||
echo "镜像 name:$data_isoname version:$data_isoversion md5:$data_isomd5 issue:$data_isoissue id:$data_isoid" >> $merge_LOG
|
||
}
|
||
|
||
function get_into_pkg(){
|
||
for pkg_list in `sqlite3 $data_NEW "select * from pkg;"`
|
||
do
|
||
new_pkg_md5=`echo $pkg_list | awk -F "|" '{print $4}'`
|
||
|
||
pkg_md5=`sqlite3 $data_ADD "select pkg_md5 from pkg where pkg_md5 is '$new_pkg_md5';"`
|
||
|
||
if [ "$new_pkg_md5" != "$pkg_md5" ];
|
||
then
|
||
new_pkg_name=`echo $pkg_list | awk -F "|" '{print $2}'`
|
||
new_pkg_version=`echo $pkg_list | awk -F "|" '{print $3}'`
|
||
new_pkg_id=`echo $pkg_list | awk -F "|" '{print $1}'`
|
||
pkg_id=$(expr `sqlite3 $data_ADD "select pkg_id from pkg order by pkg_id desc limit 1;"` + 1)
|
||
sqlite3 $data_ADD "insert into pkg values ($pkg_id,'$new_pkg_name','$new_pkg_version','$new_pkg_md5');"
|
||
|
||
#更新product_and_pkg表
|
||
local data_papid=$(expr `sqlite3 $data_ADD "select pap_id from product_and_pkg order by pap_id desc limit 1;"` + 1)
|
||
sqlite3 $data_ADD "insert into product_and_pkg values ($data_papid,$data_isoid,$pkg_id);"
|
||
echo "安装包 name:$new_pkg_name version:$new_pkg_version md5:$new_pkg_md5 id:$pkg_id papid:$data_papid" >> $merge_LOG
|
||
|
||
echo "$new_pkg_id $pkg_id" >> $merge_LIST
|
||
#获取新数据库中文件信息,并输入到总数据库中
|
||
|
||
else
|
||
pkg_id=`sqlite3 $data_ADD "select pkg_id from pkg where pkg_md5 is '$pkg_md5';"`
|
||
iso_pkgid=`sqlite3 $data_ADD "select product_id from product_and_pkg where pkg_id = '$pkg_id' and product_id = '$data_isoid';"`
|
||
|
||
#判断是否有向product_and_pkg输入相同的信息
|
||
if [ "$data_isoid" == "$iso_pkgid" ];
|
||
then
|
||
echo "相同安装包id为:$pkg_id" >> $merge_LOG
|
||
else
|
||
local data_papid=$(expr `sqlite3 $data_ADD "select pap_id from product_and_pkg order by pap_id desc limit 1;"` + 1)
|
||
sqlite3 $data_ADD "insert into product_and_pkg values ($data_papid,$data_isoid,$pkg_id);"
|
||
echo "更新product_and_pkg表 papid=$data_papid iso_id=$data_isoid pkg_id=$pkg_id" >> $merge_LOG
|
||
fi
|
||
fi
|
||
done
|
||
}
|
||
|
||
#获取新数据库中文件信息存入到总数据库中
|
||
function get_into_file(){
|
||
|
||
OLDIFS=$IFS
|
||
IFS=$'\n'
|
||
|
||
for file_pkg_list in `cat $merge_LIST`
|
||
do
|
||
pkg_list=`echo $file_pkg_list | awk '{print $1}'`
|
||
for file_id in $(sqlite3 $data_NEW "select file_id from file where pkg_id= '$pkg_list';")
|
||
do
|
||
data_fileid=$(expr `sqlite3 $data_ADD "select file_id from file order by file_id desc limit 1;"` + 1)
|
||
|
||
data_filename=`sqlite3 $data_NEW "select file_name from file where file_id=$file_id"`
|
||
data_pkgid=`echo $file_pkg_list | awk '{print $2}'`
|
||
data_filepath=`sqlite3 $data_NEW "select file_pathname from file where file_id=$file_id"`
|
||
data_filemd5=`sqlite3 $data_NEW "select file_md5 from file where file_id=$file_id"`
|
||
data_filetype=`sqlite3 $data_NEW "select file_type from file where file_id=$file_id"`
|
||
data_fileowner=`sqlite3 $data_NEW "select file_owner from file where file_id=$file_id"`
|
||
data_filegenus=`sqlite3 $data_NEW "select file_genus from file where file_id=$file_id"`
|
||
data_filepermis=`sqlite3 $data_NEW "select file_permis from file where file_id=$file_id"`
|
||
data_filesize=`sqlite3 $data_NEW "select file_size from file where file_id=$file_id"`
|
||
data_fileacl=`sqlite3 $data_NEW "select file_acl from file where file_id=$file_id"`
|
||
data_filecap=`sqlite3 $data_NEW "select file_capable from file where file_id=$file_id"`
|
||
data_filelevel=`sqlite3 $data_NEW "select file_level from file where file_id=$file_id"`
|
||
data_filemac=`sqlite3 $data_NEW "select file_mac from file where file_id=$file_id"`
|
||
|
||
sqlite3 $data_ADD "insert into file values ($data_fileid,\"$data_filename\",$data_pkgid,\"$data_filepath\",\"$data_filemd5\",\"$data_filetype\",\"$data_fileowner\",\"$data_filegenus\",$data_filepermis,$data_filesize,\"$data_fileacl\",\"$data_filecap\",\"$data_filelevel\",\"$data_filemac\");"
|
||
|
||
echo "文件 id:$data_fileid name:$data_filename pkgid:$data_pkgid newpkgid:$new_pkg_id path:$data_filepath md5:$data_filemd5 type:$data_filetype owner:$data_fileowner genus:$data_filegenus permis:$data_filepermis size:$data_filesize acl:$data_fileacl cap:$data_filecap level:$data_filelevel mac:$data_filemac" >> $merge_LOG
|
||
done
|
||
done
|
||
|
||
IFS=$OLDIFS
|
||
}
|
||
|
||
function main(){
|
||
|
||
set_env
|
||
#设置环境
|
||
|
||
get_into_iso
|
||
#获取新数据库中镜像信息,并输入到总数据库中
|
||
|
||
get_into_pkg
|
||
#获取新数据库中安装包信息,并输入到总数据库中
|
||
|
||
get_into_file
|
||
#获取新数据库中文件信息,并如输入到总数据库中
|
||
|
||
}
|
||
|
||
main
|