使用dd将sda的分区复制到sdb上的文件

use*_*282 3 dd command

如何将(windows 保留、window7)dd的前 2 个分区复制/dev/sda到 上的文件/Dev/sdb

我想我可以cd/media/sam/1TB-NTFS/{我创建的文件夹}并dd从那里运行:

dd if=/dev/sda of={the folder created}/filename` 
Run Code Online (Sandbox Code Playgroud)

但我无法确定要从 sda 复制多少字节,因此当我恢复它时,我不会踩到 sda3。

............ fdisk 的结果............

am@Homebuilt:~$ sudo fdisk -l
[sudo] password for sam:      
Disk /dev/sda: 465.76 GiB, 500107862016 bytes, 976773168 sectors
Disk model: WDC WD5000AZLX-0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xc1f6d562

Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda1            2048    206847    204800   100M  7 HPFS/NTFS/exFAT
/dev/sda2          206848 585312209 585105362   279G  7 HPFS/NTFS/exFAT
/dev/sda3  *    585312256 586362879   1050624   513M ef EFI (FAT-12/16/32)
/dev/sda4       586364926 976771071 390406146 186.2G  5 Extended
/dev/sda5       586364928 976771071 390406144 186.2G 83 Linux
Run Code Online (Sandbox Code Playgroud)

分区 4 不在物理扇区边界上开始。

Disk /dev/sdb: 931.51 GiB, 1000204886016 bytes, 244190646 sectors
Disk model: EZEX-00BN5A0    
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x000e72ed

Device     Boot Start       End   Sectors   Size Id Type
/dev/sdb1         256 244189951 244189696 931.5G  7 HPFS/NTFS/exFAT
Run Code Online (Sandbox Code Playgroud)

...................................................... ......................

204800 + 585105362 = 585310162 total sectors for sda1 + sda2 @ 512 byts/sector = 
299678802944 (bytes)/ 1024 = 292655081 1k blocks
299678802944 (bytes)/ 2048 = 146327540.5 2k blocks
Run Code Online (Sandbox Code Playgroud)

这里有些不对劲,字节数应该可以被 2048,4096,8192 ....etc 整除,不是吗?

roa*_*ima 7

dd你根本不需要使用。确保您是 root:

sudo -s
Run Code Online (Sandbox Code Playgroud)

然后只需复制分区

cat /dev/sda1 >/media/sam/1TB-NTFS/sda1.img
cat /dev/sda2 >/media/sam/1TB-NTFS/sda2.img
Run Code Online (Sandbox Code Playgroud)

这里不需要计算任何偏移量,因为/dev/sda内核已经通过公开各个分区来完成此操作。

我使用了cat代替,dd因为对于像这样的简单情况,最好使用更简单的工具。(有很多选择,dd但很多人误解和误用它们,因此一般来说,完全远离它更安全、更可靠,而且通常更有效。)

如果您想要持续的进度状态报告,请使用pv而不是cat

  • dd 与 cat —— 如今 dd 仍然有意义吗?https://unix.stackexchange.com/questions/12532/dd-vs-cat-is-dd-still-relevant-these-days (5认同)
  • dd 和 cat 写入图像文件有什么区别?https://superuser.com/questions/944603/whats-the-difference- Between-dd-and-cat-for-writing-image-files (5认同)
  • @roaima | 我没有问题只是想在您的答案中添加信息^^ (5认同)
  • 您认为与在每个分区上使用“dd”相比有什么优势? (2认同)