我试图encryption我们的磁带备份,使用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添加encryption:
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的输出中有一些东西在写入磁带时会造成问题,因为文件是正确创build的,如果将输出删除并发送到磁带,也可以正常工作。
有什么build议么?
这些是我的家庭备份脚本的相关行:
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
您可以创build备份文件,稍后将其复制到磁带
dd if=/backup/file.tar of=/dev/tap bs=10k
还有很多其他可能的组合。 我正在使用Blowfish Encryption,看起来像是想要AES,但是很容易换掉。 我知道其他人通常使用GPG而不是OpenSSL。 还可以设置非对称密钥(AES或DSS)来生成唯一的会话密钥,并将其添加到文件stream中,但是这会更复杂一些,并且使encryption文件的parsing也变得更加复杂。 但是,对于备份将在现场运行并且不希望现场人员能够篡改备份的环境非常有用。
我尝试了以下,它解密工作:
$ 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对你的post的评论是正确的。 正确的“tee”语法是沿着
$ command | tee outputfile1 > outputfile2