在 Linux 上通过网络实时压缩制作磁盘映像

在 Linux 上通过网络实时压缩制作磁盘映像

我在网络上有两台 Linux 笔记本电脑,没有额外的存储空间。我想在第二台笔记本电脑上备份第一台笔记本电脑的硬盘(制作完整的硬盘映像)。如何使用实时压缩来实现这一点?

答案1

为了制作可操作且可在本地安装的硬盘分区副本,您需要执行以下操作:

  • 通过网络连接2台计算机;
  • 在两者上都运行 Linux(如果其中任何一个都没有安装 Linux,那么 LiveCD 就很有用);
  • 在保存感兴趣的硬盘分区的计算机上安装外部 fs(通过网络、fe ssh、samba、ftp、nfs 等);
  • 授予访问 /dev 中的分区文件所需的权限(fe /dev/sda2);
  • 执行以下操作:

    $ dd if=/dev/sda2 conv=fdatasync bs=8096 | gzip -cf > $PATH_IN_EXTERNAL_FS/sda2.img.gz
    $ dd if=/dev/sda2 bs=8096 | md5sum - > $PATH_IN_EXTERNAL_FS/sda2.orig.md5
    

    注意:你可以同时执行这两个命令;
    注意:这可能需要很长时间(例如,在无线(G)连接上,处理 150 gb NTFS 映像需要 34 小时,而映像被 gzip 压缩为 106 gb,md5 总和计算大约需要一个小时);注意:你可以在另一个终端窗口中执行以下操作来观察 dd 的进度:

    $ watch -n30 "kill -USR1 $PID_OF_DD"
    
  • 当它在另一台计算机(现在存储图像的位置)上完成时执行以下操作:

    $ gunzip -c sda2.img.gz | dd of=sda2.img bs=8096 && dd if=sda2.img bs=8096 | md5sum - > sda2.img.md5
    
  • 现在比较原始分区和图像的 md5 总和:

    $ cat sda2.orig.md5 && cat sda2.img.md5
    

    注意:如果字符串相等,则一切正常;

  • 现在您可以像挂载原始分区一样挂载 sda2.img,但必须指定 loop 选项来挂载工具。以下操作应该有效:

    # mount -o loop sda2.img /mnt/sda2_img
    

    注意:也许您需要指定一些其他挂载工具选项才能使其工作;

  • 祝你今天过得愉快!

相关内容