使用 GnuPG 加密目录?

使用 GnuPG 加密目录?

有什么方法可以使用 来加密目录吗gpg?它似乎只接受文件作为参数。

答案1

为什么不先tar对文件进行加密,然后再对 tarball 进行加密?

答案2

我刚刚在联机帮助页上看到了该选项--multifile

这会修改某些其他命令以接受多个文件以在命令行上进行处理或从 STDIN 读取,每个文件名位于单独的行上。这允许同时处理许多文件。 --multi‐ file 目前可以与 --verify、--encrypt 和 --decrypt 一起使用。请注意,--multifile --verify 不能与分离的签名一起使用。

您特别要寻找的是--encrypt-files联机帮助页:

与 --multifile --encrypt 相同。

答案3

我已阅读已标记为已接受的答案的评论。

看起来你应该意识到|(匿名管道)的魔力,检查我刚刚在超级用户上发布的答案您会发现tar&gpg可以“连接”在一起,以便您的输出被压缩和加密。

请注意,它仍然会使用大量的系统资源,因此请考虑使用nice.

另外,虽然我有心情建议一些主题,这些主题可能会让您在命令行上的生活变得更轻松;研究文件描述符和命名管道来传递数据。

如果您想看看理解了上述主题后可以施展什么样的魔法,请查看特拉维斯-CI为与在命令行上自动化 GnuPG 相关的解决方案构建日志和相关脚本。

- - 更新

根据要求,可以在前面提到的脚本中找到处理目录的示例680一个更普遍的例子是......

#!/usr/bin/env bash
dir_path="${1:?${0##*/} needs a directory path as the first argument}"
default_gpg_email="[email protected]"
gpg_email="${2:-$default_gpg_email}"
_dir_name="${dir_path##*/}"
_dir_name="${_dir_name%/*}"
Var_star_date="$(date -u +%s)"

if [ -d "${dir_path}" ]; then
    tar -cz - "${dir_path}" | gpg --always-trust --armor --batch --no-tty --encrypt --recipient ${gpg_email} > /tmp/${Var_star_date}_${_dir_name}.tgz.gpg"
else
    echo "${0##*/} operates on directories"
    exit 1
fi

...可能与script-name.sh /path/to/diror一起运行script-name.sh /path/to/dir [email protected]应该输出到/tmp目录一个文件<current-date>_<top-dir-name>.tgz.gpg

答案4

所以我不知道如何加密整个目录,但这里有一个命令将加密以 .csv 结尾的目录中的所有文件。

寻找 。 -name "*.csv" -exec gpg --cipher-algo AES256 --对称 --passphrase-file .passphrase --batch --yes {} ;

相关内容