我有一个磁盘,比如/ dev / sda.
这是fdisk -l:
Disk /dev/sda: 64.0 GB,64023257088 bytes 255 heads,63 sectors/track,7783 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0000e4b5 Device Boot Start End Blocks Id System /dev/sda1 * 1 27 209920 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 27 525 4000768 5 Extended Partition 2 does not end on cylinder boundary. /dev/sda5 27 353 2621440 83 Linux /dev/sda6 353 405 416768 83 Linux /dev/sda7 405 490 675840 83 Linux /dev/sda8 490 525 282624 83 Linux
我需要制作一个图像存储在我们的文件服务器上,用于闪存我们正在制造的其他设备,所以我只想要使用的空间(只有大约4GB).我想保留mbr等…因为这个设备应该在复制完成后立即启动.
有任何想法吗?我以前一直在使用dd if = / dev / sda = [// fileserver / file],但那时,我的主副本是一个4GB的flash ide.
解决方法
回到那一天,我遇到了嵌入式Linux发行版的类似问题 – 在压缩图像之前摆脱所有垃圾.
dd if = / dev / zero of = asdf.txt.等到它死了.删除asdf.txt.
您刚刚在设备的所有可用空间上写了零.
现在获取磁盘映像并通过gzip运行它.瞧,稀疏的形象.
可能不能很好地扩展,如果你真的需要写入磁盘可能会导致问题,但是嘿.
您可以将磁盘的rsync快照写入另一个卷,将其归零,然后获取该磁盘映像.
注意:对于SSD可能有危险,用户应考虑此操作.