Answers:
为什么不tar
先加密要加密的文件,然后再加密tarball?
我刚刚--multifile
在手册页上看到了该选项:
这会修改某些其他命令,以接受多个文件以在命令行上进行处理,或者从STDIN读取每个文件名并在单独的行上。这样可以一次处理许多文件。--multi-文件当前可能与--verify,-encrypt和--decrypt一起使用。请注意,--multifile --verify不可与分离的签名一起使用。
您特别需要的是--encrypt-files
,再次是联机帮助页:
与--multifile --encrypt相同。
嘿,我读了关于被标记为例外的答案的评论;看起来您应该意识到|
(匿名管道)的神奇之处,请检查一下我刚刚在超级用户上发布的答案,您会发现tar
&gpg
可以连接在一起,以便在输出之前对输出进行压缩和加密。请注意,它仍然会占用大量系统资源,因此请查看man
页面中的nice
命令,以限制命令仅消耗一定比例的资源的能力。同样,在我想提出一些主题时,可以在命令行上总体上简化您的生活;查看文件描述符和命名管道以传递数据。
如果您希望了解上述主题后可以执行什么魔术,那么请查看Travis-CI构建日志和相关脚本,以获取与在命令行上自动化GnuPG相关的解决方案。
- - 更新
根据要求,可以在前面提到的脚本的第680行找到处理目录的示例,而更通用的示例是...
#!/usr/bin/env bash
dir_path="${1:?${0##*/} needs a directory path as the first argument}"
default_gpg_email="your-email@host.domain"
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
或script-name.sh /path/to/dir new-email@host.domain
与应输出到/tmp
文件目录<current-date>_<top-dir-name>.tgz.gpg