目前,我们可以使用ntbackup和GPG在批处理脚本中分两步执行和encryptionWindows备份,如下所示:
ntbackup backup "@selection_file.bks" /f "backup_file.bak" gpg --recipient "recipient" --encrypt "backup_file.bak" --output "encrypted_file" --yes --batch
我想知道是否有任何方法来结合这些步骤直接输出备份到GPG,而不创build一个中间,未encryption的备份文件?
为了澄清,我正在寻找像标准inputredirect或pipe道
prog.exe | prog2.exe
与GPG在命令行一起使用。 谢谢你的时间。
正如Matt_Simmons如此清楚地解释,ntbackup不会输出到标准输出,所以试图使用它是注定的。
但是,如果你使用(unix convention)' – '作为input文件,gpg 会做正确的事情。
所以,现在您需要一种方法来收集文件,其中包括“轻松select和排除个别文件”,这些tar完全符合法案(参见-T和-X标志)。 现代版本甚至会通过-z(gzip)和-j(bzip)标志进行压缩。
当然,你可以用pipe子把它们连在一起。
tar -cjf - /dir/to/backup -X .mp3 | gpg --encrypt - --output "encrypted_backup.enc"
我不认为你能做到这一点。 但作为替代scheme,您可以将其备份到安装的TrueCrypt卷。
好的,这是为什么这不起作用。
你试图做的是说服ntbackup将备份数据stream到标准输出而不是文件。 问题是ntbackup不能被写入能够做到这一点。 ntbackup必须被赋予文件名才能输出数据,不幸的是,在Windows中,没有等同于/ dev / stdin或/ dev / stdout。
为了这个工作,你需要说服ntbackup打印原始备份数据到屏幕上。 我没有意识到(或通过search发现)的文档,甚至暗示这是远程可能的。 它只是没有写这样做。 抱歉。
为了一些编程? :)你可以使用一个命名pipe道 (aka fifo)来做到这一点,但据我所知,没有batch file就绪接口。
你可以使用一个FIFO文件作为pipe道。 虽然我不确定你会如何在Windows上创build其中的一个。 但是这通常是他们用于的地方,你不能使用STDOUT来pipe道。
执行一个标准的ntbackup,然后使用gpg创build一个中间的,未encryption的文件。 但是,如果启用EFS,则可以将备份文件置于encryption文件夹中,以便攻击者无法恢复.bkf文件的纯文本。 如果没有完全切换工具集,这可能是完成你所要求的最简单的方法。
你不能用gpg做,但你可以用openssl和mysys:
cat.exe testfile | openssl enc -cast > outfile
这里是联机帮助页面 ,如果您真的需要,甚至可以在命令行上指定一个密码。 这只适用于对称encryption。
7-Zip命令行文档提到-si和-so切换到从stdin读取并写入标准输出。
7z a dummy -tgzip -so Doc.txt > archive.gz压缩Doc.txt文件以输出stream,并将该stream写入archive.gz文件。
它没有提到pipe道,但如果你可以写入标准输出,我不明白为什么GPG将无法读取它。
我不相信ntbackup本身支持任何types的encryption。