使用命令行进行文件夹的GPG加密与解密

29

gpg命令行的man页面(Gnupg)包含了加密和解密文件的命令。以下是使用gpg加密/解密文件的标准命令。

gpg --encrypt --recipient xxx@mail.com ~/xxx/xxx.txt - 加密

gpg --output ~/xxx/xxx.txt --decrypt ~/xxx/xxx.gpg - 解密

但如果我有一个包含多个文件和文件夹的文件夹,如何使用命令行加密它?


这是你的答案:http://superuser.com/a/973338。顺便说一下,这个问题似乎不适合在stackoverflow上讨论。 - zloster
3个回答

37

解决方案1:

使用 gpg-zip。

将用户 Bob 的目录 mydocs 的内容加密到文件 test1 中:

gpg-zip --encrypt --output test1 --gpg-args  -r Bob mydocs

列出存档 test1 的内容:

gpg-zip --list-archive test1

这是一个直接来自将文件加密或签名成归档文件的示例。如果您详细阅读该页面,它将对您很有帮助。

解决方案2:

将目录转换为文件

如果您想要加密一个目录,您需要首先将其转换为一个文件。运行以下命令:

tar czf myfiles.tar.gz mydirectory/

这将给您一个名为'myfiles.tar.gz'的新文件,您可以对其进行加密/解密。要将tarball转换回目录:

tar xzf myfiles.tar.gz

现在你可以像之前一样使用加密。因此:

gpg --encrypt --recipient xxx@mail.com ~/xxx/xxx.txt
这是直接从Berkeley加密的示例中获取的,该示例也是一个快速且有用的阅读材料。
您可以在这里查看手册页面:GNU GPG man

1
根据解决方案2,http://duplicity.nongnu.org/创建加密tar文件,并提供通过各种方式传输到远程位置的功能,使用高效的rsync协议节省空间。 - David Oliver
1
我不得不在gpg-args的参数周围加上引号:--gpg-args“-r Bob” - mmalone
13
gpg-zip已经被弃用,推荐使用gpgtar - demure
在第一个命令中使用tar的压缩z标志通常是一种资源浪费,因为gpg已经进行了一些压缩。默认值为--compress-algo zip,压缩级别为6 - mxmehl
1
如果要求加密一个已经压缩过的文件,gpg会检测到并禁用自身的压缩功能。因此,无论是否启用压缩选项,数据都只会被压缩一次,无论是使用带有压缩功能的tar还是不带压缩功能的tar。这种行为在gpgman页面中有明确说明,如果使用gpg -v调用,gpg将报告其对此操作的处理方式。 - Carl

17

gpgtar也是另一个选择。gpgtar可以将文件加密或签名到存档中。它是一个使用与PGP Zip相同格式的gpg-ized tar。

它会随gnupg一起安装在MacOS和Linux上。

加密目录

gpgtar --encrypt --output <out_file_name> -r <recipient> <dir_name>

解密目录

gpgtar --decrypt <out_file_name>

gpgtar手册页


11

如果您不想将所有内容打成tar包,而是想单独加密多个文件:

cd 进入文件夹

加密: $ls | gpg --multifile --encrypt$ls | gpg --encrypt-files -r <接收方>

解密: $ls | gpg --multifile --decrypt$ls | gpg --decrypt-files


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接