Bash 正在寻找用于快照生成(diskspace)的Maven存储库清理脚本(unix)

Bash 正在寻找用于快照生成(diskspace)的Maven存储库清理脚本(unix),bash,maven-2,continuous-integration,cron,snapshot,Bash,Maven 2,Continuous Integration,Cron,Snapshot,因此,我们有自己的私有Maven存储库,可以向其发布快照构建 我们有很多版本,所以磁盘空间开始成为我们所有快照版本的一个问题。虽然手动执行此操作很有趣,但我想知道是否有人知道我可以运行CRON脚本来执行快照清理 我知道sonatype是为他们自己的回购而这样做的,但我找不到脚本。要查找两周前更新的所有快照文件,请执行以下操作: find . -type f -mtime +14 | grep SNAPSHOT 通过管道将其输送到xargs rm,您应该会表现良好 一个警告:存储库管理员将创建

因此,我们有自己的私有Maven存储库,可以向其发布快照构建

我们有很多版本,所以磁盘空间开始成为我们所有快照版本的一个问题。虽然手动执行此操作很有趣,但我想知道是否有人知道我可以运行CRON脚本来执行快照清理


我知道sonatype是为他们自己的回购而这样做的,但我找不到脚本。

要查找两周前更新的所有快照文件,请执行以下操作:

 find . -type f -mtime +14 | grep SNAPSHOT
通过管道将其输送到xargs rm,您应该会表现良好


一个警告:存储库管理员将创建一个
metadata.xml
文件,其中列出所有已发布的修订。假设您只是使用
scp
发布,并使用Web服务器检索,我认为该文件不存在(因此此脚本不涉及该文件这一事实不应该成为问题)。

要查找两周前更新的所有快照文件:

 find . -type f -mtime +14 | grep SNAPSHOT
通过管道将其输送到xargs rm,您应该会表现良好


一个警告:存储库管理员将创建一个
metadata.xml
文件,其中列出所有已发布的修订。假设您只是使用
scp
发布,并使用Web服务器检索,我认为该文件不存在(因此此脚本不涉及该文件这一事实不应该成为问题)。

以下脚本对我来说很好:

#!/bin/sh
REPO=/var/www/maven2/snapshots
find $REPO -type d -name '*-SNAPSHOT' | while read project; do
    if [ -f $project/maven-metadata.xml ]; then # Make sure this is a maven artifact directory
            # Assume that snapshot numbering is designed to be sorted numerically
            latestversion=$(ls $project | grep -v 'maven-metadata.*' | sort -n | grep '\.pom$' | tail -n1)
            latestversion=$(basename $latestversion .pom)
            # Delete everything, but the latest version and the maven metadata
            find $project -type f | grep -v -e 'maven-metadata.*' -e "$latestversion.*" | xargs rm
    fi
done

以下脚本适合我:

#!/bin/sh
REPO=/var/www/maven2/snapshots
find $REPO -type d -name '*-SNAPSHOT' | while read project; do
    if [ -f $project/maven-metadata.xml ]; then # Make sure this is a maven artifact directory
            # Assume that snapshot numbering is designed to be sorted numerically
            latestversion=$(ls $project | grep -v 'maven-metadata.*' | sort -n | grep '\.pom$' | tail -n1)
            latestversion=$(basename $latestversion .pom)
            # Delete everything, but the latest version and the maven metadata
            find $project -type f | grep -v -e 'maven-metadata.*' -e "$latestversion.*" | xargs rm
    fi
done

顺便说一句,使用了Nexus的免费版本后,我想我再也不会回到一个简单的存储库。。。事实上,我是在我的家用电脑上运行的。问题是,它会删除超过2周的快照的最后一个版本(或者不管你选择多长时间)。试图找到一种方法让它不使用最后一个版本。顺便说一句,使用了Nexus的免费版本,我认为我永远不会回到一个简单的存储库。。。事实上,我在我的家用计算机上运行了它。问题是,它会删除超过2周(或您选择的时间)的快照的最后一个版本。尝试找出一种方法让它不使用最后一个版本。