![通过压缩和加密管道备份](https://linux22.com/image/158671/%E9%80%9A%E8%BF%87%E5%8E%8B%E7%BC%A9%E5%92%8C%E5%8A%A0%E5%AF%86%E7%AE%A1%E9%81%93%E5%A4%87%E4%BB%BD.png)
我正在尝试将本地系统的磁盘映像备份到远程系统,稍后我可以通过 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 的新手,所以如果有人能发现我的错误或告诉我我正在使用的工具的局限性,我将不胜感激!