标签: dd

在硬盘上使用 dd 来处理坏块?

我正在寻找使用 dd 来克隆故障硬盘。我担心的是肯定会有坏块。所以我的问题是dd坏块会留下所选块大小(bs)大小的间隙还是只会与硬盘驱动器上的扇区一样大?

unix hard-drive dd

6
推荐指数
1
解决办法
9298
查看次数

不小心将映像添加到错误的驱动器/覆盖分区表 + NTFS 分区启动

dd在尝试复制 freenas ISO 时搞砸了并设置了错误的输出,覆盖了错误的外部硬盘驱动器。

  • 外置硬盘仅用于数据存储,系统完好无损
  • 驱动器有一个 NTFS 分区,用于归档整个设备(2TB WD 元素)
  • 驱动器是 EFI GPT
  • 当时安装了驱动器,运行后可能写入/读取了几 kB 的数据 dd
  • 驱动器刚刚使用了几个月且运行良好(定期进行 SMART / fs 检查)
  • 我还没有重新启动操作系统(crunchbang)
  • /proc/partition 仍然保存正确的信息(并已存储)
  • Havedd的输出(记录输入/输出/字节)
  • testdrive 在快速或深度搜索中没有找到任何分区
  • 运行 photorec 以恢复更重要的数据(几个尚未备份的近期纯文本文件)。绝大多数磁盘内容 (> 80%) 是不必要的媒体文件。
  • 在单独的计算机上使用 Windows

我目前的计划是让 photorec 做它的事情,然后用 gparted 重新创建 mbr 并使用 cfdisk 使用来自 /sys/block/.../ 的扇区信息创建另一个 NTFS 分区。这是一个好的行动方案(即成功的机会)吗?或者我应该先尝试其他什么?

可能的相关资料:

dd if=FreeNAS-8.0.4-RELEASE-p3-x86.iso of=/dev/sdc:
194568+0 records in
194568+0 records out
99618816 bytes (100 MB) copied

grep . /sys/block/sdc/sdc*/{start,size}:
/sys/block/sdc/sdc1/start:2048
/sys/block/sdc/sdc1/size:3907022848

cat /proc/partitions:
major minor  #blocks  name
** …
Run Code Online (Sandbox Code Playgroud)

linux ntfs data-recovery dd file-recovery

6
推荐指数
1
解决办法
1860
查看次数

是否可以“立即”创建任意文件?

我已经看到以下技巧可以稍微快速地创建大的空文件:

dd if=/dev/zero of=test.dat bs=1024 count=1024
Run Code Online (Sandbox Code Playgroud)

但是,这在创建多 GB 文件时仍然需要一些时间。我认为这次是由磁盘将所有\0s 从写入/dev/zerotest.dat

有没有办法“立即”创建任意大小的文件,而无需实际将其内容初始化为任何内容?

unix dd

6
推荐指数
1
解决办法
290
查看次数

bash - 测试磁盘是否未分区

我目前正在研究使用 mhddfs 聚合可用磁盘空间的 DIY 网络存储。

现在我想要的是,例如给定一个热插拔托架,当我插入一个全新的未分区磁盘时,我希望使用 bash 脚本自动对磁盘进行分区并挂载新的 mhddfs 分区。

如果服务器关闭,插入新磁盘并再次打开服务器,则会出现相同的情况。

所以问题是:如何使用 bash 脚本检测未分区的磁盘?

问题还包括不应有错误检测。例如,如果插入了一个加密磁盘,它不应该被自动重新分区和格式化——这一点是问题的主要兴趣点。

storage nas bash partitioning dd

6
推荐指数
2
解决办法
1万
查看次数

cat 可以用来克隆一个分区吗?

例如,我可以这样做:

cat /dev/sda1 > /dev/sda2
Run Code Online (Sandbox Code Playgroud)

而不是使用 dd,如果没有,为什么这不起作用?

linux bash clone cat dd

6
推荐指数
1
解决办法
4736
查看次数

dd 能做什么而 pv 不能?

我一直在网上看到dd结合使用pv来显示进度的示例...但是,我不明白的是,它pv完全有能力完全独立完成任务。那么,为什么dd还要使用呢?是否有一些优势是没有dd提供的?pv

同时使用dd和 的示例pv。其中有些确实很复杂...

dd if=/dev/sda | pv | dd of=/mnt/backup.img
dd if=/dev/sda | pv -s 10G | dd of=/mnt/backup.img
dd if=/dev/sda | (pv -s `fdisk -l /dev/sda | grep -o '[0-9]*\{1\} MB' | awk '{print $1}'`m) | dd of=/mnt/backup.img
Run Code Online (Sandbox Code Playgroud)

pv你可以通过单独使用来实现同样的事情

pv /dev/sda > /mnt/backup.img
Run Code Online (Sandbox Code Playgroud)

linux command-line dd disk-image

6
推荐指数
1
解决办法
6115
查看次数

我在尝试创建可启动的 Linux 分发映像时缺少哪些步骤?

我正在尝试dd为可与硬盘驱动器和闪存介质一起使用的操作系统创建分发映像(通过 Linux 的命令)。我已成功创建映像,但无法正常启动。我将布局以下步骤:

  1. 这将创建一个包含整个图像的空白文件:

    dd if=/dev/zero of=/tmp/test.img bs=512 count=1250000
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将环回设备文件与映像文件关联:

    losetup /dev/loop0 /tmp/test.img
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在我们可以操作之前,parted我们必须定义一个媒体标签类型:

    parted -s /dev/loop0 mklabel msdos
    
    Run Code Online (Sandbox Code Playgroud)
  4. 使图像文件中的第一个分区为 512MB:

    parted -s -a opt /dev/loop0 mkpart primary ext2 '0%' 512MB
    
    Run Code Online (Sandbox Code Playgroud)
  5. 将第一个分区设置为“可引导”:

    parted -s /dev/loop0 set 1 boot on
    
    Run Code Online (Sandbox Code Playgroud)
  6. 在第一个分区上创建一个 Ext2 文件系统:

    mkfs.ext2 -b 1024 /dev/loop0p1
    
    Run Code Online (Sandbox Code Playgroud)
  7. 安装 grub 引导代码的 stage1,同时保留上面创建的分区表:

    dd if=/boot/grub/stage1 of=/dev/loop0 bs=446 count=1
    
    Run Code Online (Sandbox Code Playgroud)
  8. 在媒体的前 512 字节之后安装 grub 引导代码的 stage2(跳过 stage1 和分区表):

    dd if=/boot/grub/stage2 of=/dev/loop0 bs=512 seek=1
    
    Run Code Online (Sandbox Code Playgroud)
  9. 将镜像文件的第一个分区挂载到一个挂载点:

    mount /dev/loop0p1 /mnt/image
    
    Run Code Online (Sandbox Code Playgroud)
  10. 将所有数据复制到分区中并卸载。

  11. dd 映像文件到任何硬盘驱动器或闪存介质。

使用这些步骤,我可以 …

linux bootloader partitioning dd disk-image

6
推荐指数
1
解决办法
168
查看次数

主驱动器上的 dd 命令错误 - 如何恢复数据?

好吧,令人讨厌的愚蠢事情发生了。我想将 Arch Linux ISO 文件复制到我的 U 盘,但很匆忙,不小心将我的主驱动器作为of参数输入。

以下是详细信息:

$ sudo dd bs=4MB if=archlinux-2017.08.01-x86_64.iso of=/dev/nvme1n1
Run Code Online (Sandbox Code Playgroud)

/dev/nvme1n1应该是/dev/sdb

我的主驱动器/dev/nvme1n1包含两个分区:

  • 1 个 512 MB EFI 引导分区
  • 一个 ext4 分区跨越 1 TB 驱动器的其余部分

的文件大小archlinux-2017.08.01-x86_64.iso为 541065216 字节,或516 MB

计算机仍在运行并且似乎工作正常,并且我有运行命令之前lsblkdf -h 之前的输出dd。输出我现在运行命令时的输出完全相同。我假设因为数据被缓存:

$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
nvme1n1     259:5    0 931.5G  0 disk 
??nvme1n1p1 259:6    0   512M  0 part /boot
??nvme1n1p2 259:7 …
Run Code Online (Sandbox Code Playgroud)

linux data-recovery partitioning dd

6
推荐指数
1
解决办法
1482
查看次数

通过差异复制更快的 dd 备份

我希望使用 dd 定期备份我的整个硬盘驱动器,但它需要大约 1.5 小时,想知道是否有更快的备份方法。

可能只是通过更新不同的字节。

linux backup dd incremental-backup external-hard-drive

5
推荐指数
1
解决办法
3885
查看次数

如何使用 DD 命令将 .VHD 文件复制到物理硬盘

我在这个网站上阅读了其他问题/答案,说这是可能的,但我想知道它是如何完成的。我尝试了以下命令,该命令成功完成,但之后 NTFS 在驱动器上无效。

$ dd if=\backup\image.vhd of=\dev\sda
Run Code Online (Sandbox Code Playgroud)

是否.vhd必须先以某种方式挂载文件?这会恢复MBR吗?

谢谢你。

参考问题

backup restore vhd dd disk-image

5
推荐指数
1
解决办法
1万
查看次数