如何压缩并加密整个目录(var/log
)?
我的尝试:
#!/bin/bash
...
tar -zcvf |bzip2|openssl smime -encrypt \
-aes256 -binary -outform DEM \
-out ${backup_dir}${backup_name} \
"${backup_public_key}" -f "/var/log"
答案1
这是一个很大的话题。我建议你先阅读这个stackoverflow回答了为什么使用gpg
而不是使用openssl
然后关注按照以下步骤操作即可。
一般来说,一旦您在 GPG 中生成了密钥,就可以通过以下方式完成:
tar -cz /path/to/a/folder | gpg --encrypt --recipient "KeyName" \
--output compressed_folder.tar.gz.gpg
请注意,GPG 默认也会压缩,因此tar
无需使用该z
选项。您应该可以更快地获得加密文件,但在某些情况下tar
,压缩算法会更好。
根据用例,您可能还会对对称加密感兴趣,而不是第二个链接中描述的非对称加密。它不需要生成私钥和公钥。如果是这样,则--symmetric
改为使用:
gpg --output doc.gpg --symmetric doc
然后系统会要求你输入密码。有关更详细的说明,请参阅官方手册。
答案2
您可以使用管道进行tar
包装和压缩,ccrypt
用于加密数据:
tar czp /var/log | ccrypt >logs.tgz.cpt
tar
打包数据并通过 进行过滤gzip
,然后将其传送到 ,ccrypt
要求输入密码并(默认情况下)执行加密。最后,数据流重定向到logs.tgz.cpt
。cpt
后缀代表使用 加密的文件ccrypt
,当您使用以下方式解密文件时,此后缀将被删除:
ccrypt -d logs.tgz.cpt
您还可以通过密钥文件提供密码-k /path/to/keyfile
,ccrypt
然后读取该文件的第一行并将其用作密码。
ccrypt 基于 Rijndael 分组密码,该密码的一个版本也被美国政府选为高级加密标准(AES,见http://www.nist.gov/aes)人们认为这种密码可以提供非常强的加密安全性。