我在网络上有两台 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
注意:也许您需要指定一些其他挂载工具选项才能使其工作;
- 祝你今天过得愉快!