通过压缩和加密管道备份

通过压缩和加密管道备份

我正在尝试将本地系统的磁盘映像备份到远程系统,稍后我可以通过 bash 脚本实现自动化。备份和恢复进展顺利,直到我引入加密,现在我认为我得到了备份,但恢复有困难。

我希望有人能够发现我做错了什么,或者使用这些工具是否无法实现我想要做的事情。更具体地说,我正在使用:

  • DD- 对磁盘进行映像
  • 压缩包- 压缩图像
  • GPG- 加密压缩图像
  • SSH- 将图像传输至:
  • 备用控制器(192.168.1.10) 将用于存储和检索备份。我将其称为偏僻的因为它是独立于当地的我要备份的系统。

退一步来简化它(不加密)并向您展示什么我确实有工作:

备份:

dd if=/dev/sda | gzip --best - | ssh [email protected] dd of=/home/user/sys1-backup.gz.img

这会将本地驱动器 (/dev/sda) 备份到远程备用控制器同时以高级别压缩对其进行压缩。

恢复备份:

恢复时,我实时启动到 gparted 或 Turnkey Linux Core 并运行:

ssh [email protected] dd if=/home/user/sys1-backup.gz.img | gunzip -d - | sudo dd of=/dev/sda

这连接到远程备用控制器,通过gunzip管道dd解压镜像成功恢复到本地磁盘。这样可行。

但是当我尝试引入加密(pgp)时,恢复时会失败。

加密备份:

dd if=/dev/sda | gzip --best - | gpg -q --symmetric --cipher-algo AES256 --yes --batch --passphrase MySuperSecurePassword | ssh [email protected] dd of=/home/user/servername-disk.gz.gpg

据我所知,我认为这部分(备份)正在使用加密。

加密恢复- (我认为这是失败的):

ssh [email protected] dd if=/home/user/servername-disk.gz.gpg | gpg -q --symmetric --cipher-algo AES256 --yes --batch --passphrase MySuperSecurePassword | gunzip -d - | dd of=/dev/sda

给出输出:

gzip: stdin: not in gzip format
0+0 records in
0+0 records out
0 bytes copied, 0.325412 s, 0.0 kB/s
gpg: [stdout]: write error: Broken pipe
gpg: DBG: deflate: iobuf_write failed
gpg: [stdout]: write error: Broken pipe
gpg: DBG: deflate: iobuf_write failed
gpg: [stdout]: write error: Broken pipe
gpg: filter_flush failed on close: Broken pipe

我是在 shell 上使用 gpg 和 dd 的新手,所以如果有人能发现我的错误或告诉我我正在使用的工具的局限性,我将不胜感激!

答案1

这似乎是一个完美的用例克隆。 Rclone可以处理

  • 远程存储,例如通过SFTP, 和
  • 加密

此时,压缩仍在工作正在进行中。在大多数情况下,首先使用 gzip 应该不成问题。

相关内容