将文件的创建时间 (RPM) 从下载时间更改为构建时间

将文件的创建时间 (RPM) 从下载时间更改为构建时间

我将通过创建我自己的内部存储库服务,createrepo并希望提供一个 Java 存储库。

自动下载 JRE 和 JDK 包描述于堆栈溢出给我留下的文件带有下载时的时间戳。文件的创建时间设置为下载脚本的运行时间。

为了进一步处理,我喜欢将时间戳设置为 RPM 包的构建时间(...以便我可以通过ls -alll--full-time等查询它们)。

如何自动将文件的创建时间(RPM)从下载时间更改为构建时间?

答案1

经过一些研究,我发现我可以通过 查询 RPM 构建时间rpm -qip

BUILDTIME=$(rpm -qip --nosignature ${FILENAME} | grep -i "Build Date  : " | sed -e 's/Build Date  : //g')
echo ${BUILDTIME}

date命令可以重新格式化给定的日期和时间字符串

TIMESTAMP=$(date --date="${BUILDTIME}" "+%Y%m%d%H%M")
echo ${TIMESTAMP}

以便稍后可以与该touch命令一起使用。

touch -m -a -t ${TIMESTAMP} ${FILENAME}

通过迭代特定目录中的所有文件,可以列出包含的所有包的所有创建时间并自动修改它。

#!/bin/bash

for FILENAME in *.rpm; do

    echo ${FILENAME}

    BUILDTIME=$(rpm -qip --nosignature ${FILENAME} | grep -i "Build Date  : " | sed -e 's/Build Date  : //g')
    echo ${BUILDTIME}

    TIMESTAMP=$(date --date="${BUILDTIME}" "+%Y%m%d%H%M")
    echo ${TIMESTAMP}

    touch -m -a -t ${TIMESTAMP} ${FILENAME}

done

相关内容