使用bash进行动态zip文件校验和检查

时间:2018-04-12 18:48:04

标签: bash sha512

我有多个zip文件,如果它们在转移时没有受到损害,我希望检查它们,如果校验和值匹配,那么我需要解压缩文件夹。

我可以为一个zip文件执行此操作,但我想要动态检查,因此每次运行检查时都不必替换zip文件名。

以下是我现在所拥有的:

if [[ $(sha512sum file.zip | cut -d " " -f 1) -ne $(cat file.sha512) ]]; then
        log "error" "Checksum values do not match"
        exit -1;
    else
        log "info" "Checksum values match"
        unzip file.zip

所以我有其他名为file1,file2的zip文件,.sha512名称也往往与其对应的zip文件同名。

提前致谢。

1 个答案:

答案 0 :(得分:2)

for for file in *.sha512
do 
    if sha512sum -c --status "$file.sha512"; then
        log "info" "Checksum values match"
        zipfile="${file/\.sha512/\.zip}"
        # zipfile="$(basename "$file" .sha512).zip"
        unzip "$zipfile"
    else
        log "error" "Checksum values do not match"
        exit 1
    fi
done

应该有效。如果在检查和解压缩后移动.zip和.sha512文件,这应该就足够了。否则,您可以使用find来搜索上周的文件:

find -maxdepth 1 -type f -name "*.sha512" -mtime -6 -exec ./ifscript.sh {} ";" 

ifscript.sh将是上面的if-else-fi块,但是带有参数而不是文件名:

if sha512sum -c --status "$1"; then