tar 到磁带并加密归档

tar 到磁带并加密归档

我正在尝试使用 tar 和 openssl 加密我们的磁带备份,但也写入本地文件,到目前为止我已经:

tar --total -czp ./tmp ./home | tee /tmp/Archive.tar.gz | tee > /dev/nst0

我不确定这是否是正确的tee语法,但它有效,因为

tar -tzvf /dev/nst0

tar -tzvf /tmp/Archive.tar.gz

给出正确的结果。

但是如果我尝试使用 openssl 添加加密:

tar --total -czp ./tmp ./home | openssl aes-256-cbc -e -salt -pass file:/encrp_file  | tee /tmp/Archive.tar.gz | tee > /dev/nst0

我得到:

tee: standard output: Invalid argument
tee: write error

我认为输出中存在一些问题,导致写入磁带时openssl出现问题,因为tee文件已正确创建,如果我删除输出tee并将其发送到磁带,它也可以工作。

有什么建议么?

答案1

这些是我的家庭备份脚本中的相关行:

tar czfTP - $FILELIST --use-compress-program xz | openssl bf -salt -pass file:passkey.txt | tee /backup/location/file_name.txz.bfe | dd bs=10k of=/dev/tape

您可以先创建备份文件,然后稍后将其复制到磁带上

dd if=/backup/file.tar of=/dev/tap bs=10k

还有许多其他可能的组合。我正在使用 Blowfish 加密,看起来您想要 AES,但很容易换掉。我知道其他人通常使用 GPG 而不是 OpenSSL。也可以设置非对称密钥(AES 或 DSS)来生成唯一的会话密钥并将其添加到文件流的前面,但这要复杂得多,并且也会使解析加密文件变得更加复杂。但对于备份将被运送到场外并且您不希望现场人员能够篡改备份的环境来说,它非常有用。

答案2

我尝试了以下操作并且解密成功:

$ tar --total -czp /home |openssl aes-256-cbc -e -salt -pass file:pass.txt | tee /tmp/archive.tgz.encrypted > /tmp/archive2.tgz.encrypted

我没有磁带设备,所以我将其发送到两个不同的文件。不过,应该可以使用磁带驱动器。

因此,解密如下所示:

$ openssl aes-256-cbc -d -salt -pass file:pass.txt -in /tmp/archive.tgz |tar --total -xzvf -

并且没有出现任何错误。

b0fh 对你的帖子的评论是正确的。正确的“tee”语法如下

$ command | tee outputfile1 > outputfile2

相关内容