我想使用 Ubuntu 10.04 上的 tar 命令创建一些 tar.gz(可能还有 tar.bz2)文件。
我想用密码保护该文件。
执行此操作的命令是什么(我已经在 Google 中搜索过,但没有找到任何内容显示如何使用密码创建和提取压缩文件)。
有人知道怎么做吗?
答案1
您必须将 Unix 哲学应用于此任务:每个任务需要一个工具。
tar
打包和压缩是和gzip
或 的工作。加密是 或的bzip2
工作:gpg
openssl
加密
% tar cz folder_to_encrypt | \
openssl enc -aes-256-cbc -pbkdf2 -iter 100000 -e > out.tar.gz.enc
解密
% openssl enc -aes-256-cbc -d -in out.tar.gz.enc | tar xz
或者使用 gpg
% gpg --encrypt out.tar.gz
该openssl
变体使用对称加密,您必须告知接收方所使用的“密码”(又称“密钥”)。该gpg
变体结合使用对称和非对称加密,您使用接收方的密钥(这意味着您不必向任何人透露任何涉及的密码)来创建会话密钥并使用该密钥加密内容。
如果您选择 zip(或 7z)路线:本质上与变体相同openssl
,您必须告诉接收方密码。
答案2
如果你只是想用密码保护文件,那么可以通过命令行使用 hand zip 实用程序
zip -e <file_name>.zip <list_of_files>
-e 要求 zip 实用程序加密
工作示例:
$ touch file_{0,1}.txt # creates blank files file_0 & file_1
$ zip -e file.zip file_* # ask zip to encrypt
$ ENTER PASSWORD:
$ VERIFY PASSWORD:
$ ls file*
答案3
以下是几种方法。需要注意的一点是,如果您要使用单独的压缩和加密工具,则应始终先压缩再加密,因为加密数据本质上是不可压缩的。
这些示例压缩并加密一个名为的文件clear_text
。
使用gpg
$ gpg -c clear_text #Compress & Encrypt
$ gpg -d clear_text.gpg #Decrypt & Decompress
gpg 默认会在加密前压缩输入文件,-c
即使用带密码的对称加密。输出文件将是clear_text.gpg
。使用的一个好处gpg
是它使用标准 OpenPGP 格式,因此任何支持 OpenPGP 的加密软件都能够解密它。
使用mcrypt
$ mcrypt -z clear_text #Compress & Encrypt
$ mdecrypt -z clear_text.gz.nc #Decrypt & Decompress
该-z
选项用于压缩。默认情况下,这会输出一个名为 的文件clear_text.gz.nc
。
使用bcrypt
$ bcrypt -r clear_text #Compress & Encrypt
$ bcrypt -r clear_text.bfe #Decrypt & Decompress
bcrypt 默认在加密前进行压缩,此选项是为了确保输入文件在此过程中不会被删除。默认情况下-r
会调用输出文件。clear_text.bfe
使用gzip
和aespipe
$ cat clear_text | gzip | aespipe > clear_text.gz.aes #Compress & Encrypt
$ cat clear_text.gz.aes | aespipe -d | gunzip > clear_text #Decrypt & Decompress
aespipe 顾名思义,是一个在 stdin 上接收输入并在 stdout 上输出 aes 加密数据的程序。它不支持压缩,因此您可以先通过 gzip 管道传输输入。由于输出会转到 stdout,因此您必须将其重定向到具有您自己选择的名称的文件。这可能不是完成您所要求的最有效方法,但 aespipe 是一个多功能工具,所以我认为值得一提。
答案4
tar、gzip 和 bzip2 都不支持密码保护。请使用支持密码保护的压缩格式(例如 zip),或者使用其他工具(例如 GnuPG)进行加密。