目前,我们可以在批处理脚本中分两步使用 ntbackup 和 GPG 执行和加密 Windows 备份,如下所示:
ntbackup backup "@selection_file.bks" /f "backup_file.bak"
gpg --recipient "recipient" --encrypt "backup_file.bak" --output "encrypted_file" --yes --batch
我想知道是否有任何方法可以结合这些步骤将备份直接输出到 GPG,而无需创建中间的未加密备份文件?
为了澄清,我正在寻找标准输入重定向或管道之类的东西
prog.exe | prog2.exe
在命令行中与 GPG 一起使用。谢谢你的时间。
我不认为你能做到这一点。但作为替代方案,您可能会备份到已安装的 truecrypt 卷。
好的,这就是为什么这不起作用。
您尝试做的是说服 ntbackup 将备份数据流式传输到标准输出而不是文件。问题是 ntbackup 不是为了能够做到这一点而编写的。必须给 ntbackup 指定文件名才能将数据输出到,不幸的是,在 Windows 中,没有 /dev/stdin 或 /dev/stdout 等价物。
为了使其工作,您需要说服 ntbackup 将原始备份数据打印到屏幕上。我知道(或通过搜索发现)没有任何文档甚至暗示这是远程可能的。它只是不是为了做到这一点而写的。对不起。
准备一些编程?:) 您可以使用命名管道(又名 fifo)来执行此操作,但据我所知,没有批处理文件就绪接口。
您可能可以使用 FIFO 文件作为管道。虽然我不完全确定您将如何在 Windows 上创建其中之一。但这通常是它们的用途,您不能使用 STDOUT 进行管道传输。
执行标准 ntbackup 然后使用 gpg 确实会创建一个未加密的中间文件。但是,如果您打开 EFS,您可以将备份文件放在加密文件夹中,这样攻击者就无法恢复 .bkf 文件的明文。这可能是在不完全切换工具集的情况下完成您所要求的最简单的方法。
你不能用 gpg 来做,但你可以用 openssl 和 mysys:
这是手册页,如果您确实需要,您甚至可以在命令行上指定密码。这仅适用于对称加密。
正如 Matt_Simmons 如此清晰地解释的那样,ntbackup 不会输出到 stdout,因此尝试使用它是注定的。
但是,如果您使用(unix 约定)'-' 作为要输入的文件,gpg会做正确的事情。
因此,现在您需要一种收集文件的方法,其中包括“轻松选择和排除单个文件的能力”,这完全符合 tar 的要求(请参阅 -T 和 -X 标志)。现代版本甚至可以通过 -z (gzip) 和 -j (bzip) 标志进行压缩。
当然,您可以用管道将它们绑在一起:
7-Zip 命令行文档提到 -si 和 -so 切换为从标准输入读取并写入标准输出。
它没有提到管道,但是如果您可以写入标准输出,我不明白为什么 gpg 无法读取它。
我不相信 ntbackup 本身就支持任何类型的加密。