Rpm

將文件的創建時間 (RPM) 從下載時間更改為建構時間

  • July 30, 2018

我將通過創建自己的內部儲存庫服務createrepo並希望提供一個 Java 儲存庫。

自動下載 JRE 和 JDK 包,如Stack Overflow 中所述,給我留下的文件從下載時開始就有時間戳。文件的創建時間設置為下載腳本的執行時間。

為了進一步處理,我喜歡將時間戳設置為 RPM 包的建構時間(…以便我可以通過ls -alll--full-time等查詢它們)。

如何將文件的創建時間(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

引用自:https://unix.stackexchange.com/questions/459265