From 39365c6213ba1248a8bc2a23f96b201da073f02b Mon Sep 17 00:00:00 2001 From: shenmo Date: Thu, 13 Jul 2023 14:41:23 +0000 Subject: [PATCH] =?UTF-8?q?shit=E5=8E=9F=E5=9B=A0=EF=BC=9A=E9=80=9A?= =?UTF-8?q?=E8=BF=87=E9=9D=9E=E5=B8=B8=E6=9A=B4=E5=8A=9B=E7=9A=84=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=E8=AE=A9apt-ftparchieve=E5=AE=9E=E7=8E=B0=E4=BA=86?= =?UTF-8?q?=E5=A2=9E=E9=87=8F=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: shenmo --- shell/incremental-updating-packages.sh | 70 ++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 shell/incremental-updating-packages.sh diff --git a/shell/incremental-updating-packages.sh b/shell/incremental-updating-packages.sh new file mode 100644 index 0000000..46f0447 --- /dev/null +++ b/shell/incremental-updating-packages.sh @@ -0,0 +1,70 @@ +#!/bin/bash +###### 这里要写绝对路径 +REPO_DIR="/home/ftp/spark-store/" +DATA_DIR="$REPO_DIR/package-data" +LOCK_DIR="$REPO_DIR/package-lock" + +######阶段1:检查data目录下的.deb.package文件,去仓库验证是否有对应的.deb +######如果有,则对比时间戳,若仓库的新于.deb.package,则更新,否则continue +######如果没有,则删除此文件 +mkdir -p $DATA_DIR +rm -rf $LOCK_DIR + +cd $DATA_DIR +for DEB_PACKAGE_INFO_PATH in `find . -name '*.deb.package'`;do + +DEB_PATH=`echo ".${DEB_PACKAGE_INFO_PATH%%.package}"` +if [ -e $DEB_PATH ];then + if [ "$DEB_PACKAGE_INFO_PATH" -ot "$DEB_PATH" ] ;then + ###时间戳校验 + echo "$DEB_PATH在生成package文件后发生了改变,将重新生成" + rm $DEB_PACKAGE_INFO_PATH + fi + +else +echo "$DEB_PATH 已下架" +rm $DEB_PACKAGE_INFO_PATH +#####删除已下架的包 + +fi + + +done + +##### 阶段2:反查deb,如果有.deb.package,则跳过,否则生成 +cd $REPO_DIR + +for DEB_PATH in `find . -name '*.deb'`;do + +if [ -e $DATA_DIR/$DEB_PATH.package ];then +continue + +else +mkdir -p $DATA_DIR/`dirname $DEB_PATH` +mkdir -p $LOCK_DIR/`dirname $DEB_PATH` +touch $LOCK_DIR/$DEB_PATH.lock +until [ "`find $LOCK_DIR -name '*.deb.lock' | wc -l `" -lt "15" ];do ###最多同时15进程 +sleep 1.5 +done + + +apt-ftparchive packages $DEB_PATH > $DATA_DIR/$DEB_PATH.package && echo "新包 $DEB_PATH 已生成package文件" && rm $LOCK_DIR/$DEB_PATH.lock & +fi +done + +#####删除data目录下所有空文件夹 +until [ -z "`find $LOCK_DIR -name '*.deb.lock'`" ];do +sleep 1 +done + + +rm -r $LOCK_DIR + +find $DATA_DIR -type d -empty -exec rm -rf {} \; + +##### 合成Packages +rm $REPO_DIR/Packages +cd $DATA_DIR +for DEB_PACKAGE_INFO_PATH in `find . -name '*.deb.package'`;do +cat $DEB_PACKAGE_INFO_PATH >> $REPO_DIR/Packages +done -- Gitee