我想查看使用pv加密进度的进度视图命令。
目前有一个bash脚本,它将获取文件夹名称,tar,用openssl加密, 并使用以下行将其保存到文件中:
tar cf - $1 | openssl aes-256-cbc -salt -out $1.tar.aes
它要求输入密码,确认密码并完成其中的操作。
我可以在bash脚本中使用此命令解密,其中$1
为archive.tar.aes
:
openssl aes-256-cbc -d -salt -in $1 | tar -xf -
我想要做的是添加pv
命令,指定存档大小(以便pv可以计算ETA):
pv -n -s `du -s jazz | awk '{ print $1 }'`
并查看加密进度。
我现在正在尝试的是:
tar cf - $1 | pv -n -s `du -s jazz | awk '{ print $1 }'` | openssl aes-256-cbc -salt -out $1.tar.aes
它似乎不起作用。 会发生什么是openssl命令要求输入密码,在我输入密码之前,pv启动 吐出进展。 (虽然不准确)
这可能是我整理管道的方式。我需要对它们进行不同的分组吗? 或者我错过了一些关于管道的事情?
你能演示如何做我想在这里实现的目标吗?
任何意见或建议。 感谢。
使用来自@damienfrancois的重组管道,pv
在我之前仍然吐出东西
已输入openssl密码。这是我现在得到的输出:
enter aes-256-cbc encryption password: 0 B 0:00:01 [ 0 B/s] [> ] 0% ETA 0:00:00
Verifying - enter aes-256-cbc encryption password: 0 B 0:00:02 [ 0 B/s] [> 0 B 0:00:07 [ 0 B/s] [> ] 0% ETA 0:00:00
bad password read
我设法用-W
pv
标志来阻止密码中断。这告诉它等待
直到它在管道上获得第一个。有了这个,我可以输入密码
但进展非常不准确。我得到的是51199%
:
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
335MiB 0:00:02 [ 126MiB/s] [========================================================] 51199%
之后我得到了一个不同的问题,终端搞砸了,所以当我按下输入时 提示,它不会带我到换行符,只是在前面打印出提示 像这样的最后一个提示:
localhost:crypto-utils rudker$ localhost:crypto-utils rudker$
这可能与pv没有正确设置终端变量有关
比如如果你不在ncurses中调用endwin()
会发生什么
任何想法我怎么能得到体面的进步指示我想在这里做什么? - 不要搞乱终端。
bash脚本中最新的一行是:
tar cf - $1 | openssl aes-256-cbc -salt | pv -W -s `du -s jazz | awk '{ print $1 }'` > $1.tar.aes
答案 0 :(得分:2)
您可以重新组织管道,以便在openssl
:
pv
tar cf - $1 | openssl aes-256-cbc -salt | pv -n -s `du -hs jazz | awk '{ print $1 }'` > $1.tar.aes
以上允许openssl
写入stdout,以便在进入磁盘之前通过pv,但在解密之后。但文件大小的准确性可能并不完美。