根据rasbery pi 文档,您可以使用 /dev/disk 或 /dev/rdisk 将操作系统加载到闪存卡。
rdisk 代表原始磁盘。
/dev/disk 是块级设备,为什么 rdisk 会快 20 倍?
使用 Mac OSX
注意:在 OS X 中,每个磁盘在 /dev 中可能有两个路径引用:/dev/disk# 是一个缓冲设备,这意味着任何发送的数据都会经过额外的处理。/dev/rdisk# 是一个原始路径,它要快得多,而且在使用 dd 程序时完全没问题。在 Class 4 SD 卡上,使用 rdisk 路径的差异大约快 20 倍。
我正在使用 bash shell 并希望将命令的输出通过管道openssl rand -base64 1000传输到dd诸如dd if={output of openssl} of="sample.txt bs=1G count=1. 我想我可以使用变量,但我不确定如何最好地这样做。我想创建该文件的原因是我想要一个带有随机文本的 1GB 文件。
我想通过 100 Mbit/s 的线路备份从我网络中的一台计算机到同一网络中的另一台计算机的路径。为此我做了
dd if=/local/path of=/remote/path/in/local/network/backup.img
Run Code Online (Sandbox Code Playgroud)
这给了我大约 50 到 100 kB/s 的非常低的网络传输速度,这将永远需要。所以我停止了它并决定尝试动态压缩它以使其更小,以便传输的数量更少。所以我做了
dd if=/local/path | gzip > /remote/path/in/local/network/backup.img.gz
Run Code Online (Sandbox Code Playgroud)
但是现在我得到了大约 1 MB/s 的网络传输速度,因此速度提高了 10 到 20 倍。注意到这一点后,我在多个路径和文件上进行了测试,结果始终相同。
为什么管道dd通过gzip也会大大增加传输速率,而不是只将流的字节长度减少很多?由于压缩时 CPU 消耗较高,我原以为传输速率会略有下降,但现在我得到了双重加分。不是我不高兴,而是我只是想知道。;)
我用 hexdump 打印 MBR,得到以下输出:
000001a0 67 60 6f 70 65 72 61 74 69 6e 67 60 73 79 73 74 |g`operating`syst|
000001b0 65 6d 00 40 00 63 7b da c5 f5 61 68 00 40 00 40 |em.@.c{...ah.@.@|
000001c0 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40 |.@.@.@.@.@.@.@.@|
*
000001f0 00 40 00 40 00 40 00 40 00 40 00 40 00 40 55 ea |.@.@.@.@.@.@.@U.|
00000200
Run Code Online (Sandbox Code Playgroud)
*输出中的星号是什么意思?
将conv=sync,noerror整个硬盘备份到映像文件时添加有什么影响?
是conv=sync,noerror做司法鉴定的东西时,一个要求吗?如果是这样,为什么参考 Linux Fedora 会出现这种情况?
编辑:
好的,如果我dd没有这样做conv=sync,noerror并且dd在读取块时遇到读取错误(假设是 100M),是否dd只是跳过 100M 块并读取下一个块而不写入任何内容(dd conv=sync,noerror将零写入 100M 的输出 - 这种情况怎么样?)?
如果没有,原始硬盘和输出文件的哈希值是否不同conv=sync,noerror?还是只有在发生读取错误时才会这样?
我需要读取和写入各种闪存卡图像。我在 linux 中总是这样做的方式是使用 dd,这就是诀窍。什么是好的窗户等价物?
简而言之,我需要能够将整张卡读入一个文件,反之亦然。我试过WinDD,但这似乎是在分区而不是整个设备上运行,但我需要能够转储整个磁盘/卡及其分区表,而不管其内容如何。
使用 Windows 7 64 位,读卡器位于 USB3 端口。
我有一张从 ISO 文件创建的 CD,我用它来通过 plop linux 安装自定义版本的 Ubuntu。
cd 工作正常,但我想改用可启动的 USB 驱动器。我使用命令 dd 尝试创建可启动 USB:
dd if=filename.iso of=/dev/sdb1 bs=4k
Run Code Online (Sandbox Code Playgroud)
现在这确实复制了文件并使 USB 可启动,但我收到错误“缺少操作系统”
有任何想法吗?
我想生成一个 1 GB 的随机文件,所以我使用了以下命令。
dd if=/dev/urandom of=output bs=1G count=1
Run Code Online (Sandbox Code Playgroud)
但是每次我启动这个命令时,我都会得到一个 32 MB 的文件:
<11:58:40>$ dd if=/dev/urandom of=output bs=1G count=1
0+1 records in
0+1 records out
33554431 bytes (34 MB, 32 MiB) copied, 0,288321 s, 116 MB/s
Run Code Online (Sandbox Code Playgroud)
怎么了?
编辑:
感谢本主题中的出色答案,我提供了读取 32 个 32 MB 大块的解决方案,这使得 1GB:
dd if=/dev/urandom of=output bs=32M count=32
Run Code Online (Sandbox Code Playgroud)
给出了其他解决方案,将 1 GB 直接读取到内存,然后写入磁盘。此解决方案需要大量内存,因此不推荐使用:
dd if=/dev/urandom of=output bs=1G count=1 iflag=fullblock
Run Code Online (Sandbox Code Playgroud) 我想从我的硬盘驱动器中制作一个 VirtualBox .vdi 图像。
我在网上找到了如何通过首先使用 DD 创建 .raw 图像,然后使用 VBoxManage 将 .raw 转换为 .vdi 来描述这样做的方法。所以如果我的 HD 是 1 TB,这个过程(临时)需要 2TB 的空间来存储 .raw 和 .vdi。
我只有 1TB 以上的可用空间。有没有办法创建硬盘驱动器的 .vdi 映像,而不必先创建 .raw 映像?
我正在尝试使用 dd 从我的硬盘驱动器中找出大副本的最佳大小。我试图找出使用它的最佳块大小,我认为这是该驱动器的硬件块大小。
dd ×10
linux ×5
backup ×2
clone ×1
dev ×1
disk-image ×1
disk-utility ×1
forensics ×1
gzip ×1
hard-drive ×1
hexdump ×1
iso-image ×1
isolinux ×1
performance ×1
pipe ×1
script ×1
sd-card ×1
vdi ×1
virtualbox ×1
windows ×1
windows-7 ×1