有什么方法可以使用 来加密目录吗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/dir
or一起运行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 {} ;