【问题标题】:Add a progress bar when deciphering files gpg解密文件gpg时添加进度条
【发布时间】:2021-10-23 19:12:25
【问题描述】:

为了便于对文件和文件夹进行加密和解密,也为了获得一些关于何时完成的线索,我想用 gpg 设置一些进度条之王。 我正在使用pv 这样做,因为我不需要密码,所以它非常适合加密。 但是,我不知道如何解密,因为它可能会要求我的私钥密码。 这是我尝试过的:

#!/bin/bash

if [ "$#" -ne 1 ] || ! [ -f "$1" ]; then
  echo "Usage: $0 CIPHERED_FOLDER" >&2
  exit 1
fi

echo "Deciphering $1"
pv $1 | gpg -d | tar -xz

如果密码已被缓存,它会运行良好,但如果没有缓存,则会失败。 所以我使用了一种解决方法,将最后一行替换为gpg -d $1 | pv -W | tar -xz 但是,由于我不知道解密文件的确切大小,所以我无法知道百分比。

有没有办法让它工作?在尝试解密以将其放入缓存之前,我尝试寻找在脚本中手动询问密码短语的方法,但我找不到这样做的方法。

谢谢

编辑:我只为自己加密文件以进行安全存储,gpg 不再要求我提供收件人,因为我已经设置了default-recipient-self

【问题讨论】:

    标签: shell gnupg


    【解决方案1】:

    这是比我之前的答案更好的解决方案。

    gpg -d <(pv $1) | tar -xz
    

    &lt;() 运算符使 gpg 从为 pv 创建的文件描述符中读取,同时仍允许从标准输入读取密码。 这是我从以下位置获取解决方案的地方:https://serverfault.com/questions/40284/create-virtual-file-from-bash-command-output


    旧答案供参考:

    我设法找到了解决方法。 我首先签署一个简短的文本并将输出直接扔到 /dev/null 中。 这样,它可以确保在主要解密之前缓存密码。 它看起来像这样:

    gpg -o /dev/null --sign <(echo "1234")
    
    echo "Deciphering $1"
    pv $1 | gpg -d -q | tar -xz
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-02
      • 2018-12-27
      • 2019-08-10
      • 1970-01-01
      • 2018-02-23
      相关资源
      最近更新 更多