解密文件gpg时添加进度条

Add a progress bar when deciphering files gpg

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

#!/bin/bash

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

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

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

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

谢谢

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

这里有一个比我之前的回答更好的解决方案。

gpg -d <(pv ) | tar -xz

<() 运算符使 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 "
pv  | gpg -d -q | tar -xz