Questions tagged «dd»

dd是用于二进制数据副本的传统实用程序

13
我怎么知道dd是否仍在工作?
我没有用dd太多,但是到目前为止,这还没有使我失望。目前,我已经dd使用了12多个小时-我正在将映像写回到它所来自的磁盘上-我有点担心,因为我能够dd从磁盘上读取映像7小时。 我在配备Core 2 Duo的MacBook上运行OSX 10.6.6,速度为2.1ghz / core,内存为4gb。我正在从7200rpm硬盘驱动器(引导驱动器)上的.dmg读取,并且正在写入通过SATA-USB连接器连接的7200rpm驱动器。默认情况下,我保留了块大小,图像约为160gb。 编辑:而且,经过14个小时的纯压力dd之后,毕竟工作正常。不过,下一次,我将运行它pv并使用进行跟踪strace。感谢大家的帮助。

8
dd vs cat-这些天dd是否仍然有用?
我最近意识到,我们可以使用cat多达dd,并且实际上比dd 我知道这dd在处理磁带大小实际上与正确性(而不仅仅是性能)有关的磁带时很有用。但是,在这些日子里,有些情况下dd无法做些什么cat?(在这里,我认为小于20%的性能差异无关紧要。) 具体的例子会很好!
122 dd  cloning  cat 

20
在两台计算机之间发送大量数据的最快方法是什么?[关闭]
我经常遇到这种情况: 我有一个内部服务器,其中有一个320GB的硬盘驱动器,以及16GB的ram(可在此处找到确切的规格,但是由于这也是我在其他计算机上经常遇到的一个问题,因此我希望答案适用于任何计算机“合理的” Linux计算机) 我有一个备份服务器,其中有几个TB的硬盘空间(具体规格在此处,请参见上面的免责声明) 我想将320GB的数据从源服务器传输到目标服务器(特别是来自的数据/dev/sda)。 两台计算机实际上彼此相邻,因此我可以在它们之间进行电缆连接。 我在局域网上,并且正在使用新型路由器,这意味着我的网络速度应该“理想地”为1000Mbit,对吗? 安全性不是问题。我在本地网络上,我信任网络上的所有计算机,包括路由器。 (可选)我不一定需要数据的签名校验和,但是应该检测基本的错误检查(例如丢包或驱动器变得不可读),而不仅仅是消失在输出中。 我在线搜索了这个问题,并测试了几个命令。最常出现的一个是: ssh user@192.168.1.100 'dd bs=16M if=/dev/sda | gzip' > backup_sda.gz 事实证明,此命令太慢(运行了一个小时,仅通过数据获得了约80GB)。1GB的测试数据包花费了大约1分22秒的时间,最终没有压缩时的速度提高了两倍。由于传输的文件小于源系统上的RAM数量,因此结果可能也有偏差。 而且(这已经在1GB的测试件上进行了测试),如果我使用gzip命令and dd,则会遇到问题。与直接管道传输相比,在目标上提取时,结果文件具有不同的校验和。我仍在尝试找出原因。


5
有没有办法确定dd的bs参数的最优值?
有时我会在网上看到一些评论,例如“请确保设置'bs =',因为默认值会花费很长时间,”以及我自己极其不科学的经验,“似乎花费的时间比其他时间长。上周的时间”似乎证明了这一点。因此,每当我使用“ dd”(通常在1-2GB范围内)时,请确保指定bytes参数。大约有一半的时间我使用了要复制的任何在线指南中指定的值;剩下的时间,我将从'fdisk -l'列表中选择一些有意义的数字,因为我认为是较慢的媒体(例如,我正在写入的SD卡)。 对于给定的情况(媒体类型,总线大小或其他重要因素),是否可以确定“最佳”值?确定容易吗?如果没有,是否有一种简单的方法来获得90-95%的方法?还是“只是选择大于512的东西”甚至是正确的答案? 我已经考虑过自己尝试该实验,但是(除了进行大量工作之外)我不确定会影响答案的因素是什么,所以我不知道如何设计一个好的实验。

6
是否可以即时挂载gzip压缩的dd映像?
我喜欢第一次备份系统时创建映像备份。第一次之后,我使用rsync进行增量备份。 我通常的映像备份如下: 安装并清零空白空间: dd if=/dev/zero of=temp.dd bs=1M rm temp.dd 压缩驱动器时将其挂载并dd dd if=/dev/hda conv=sync,noerror bs=64K | gzip -c > /mnt/sda1/hda.ddimg.gz 为了使系统恢复正常,我通常会 gunzip -c /mnt/sda1/hda.img.gz | dd of=/dev/hda conv=sync,noerror bs=64K 这确实很简单,可以节省“整个驱动器”,但实际上只是节省了使用空间。 这是问题所在。可以说我执行了上述操作,但是没有在干净的系统上执行此操作,并且没有使rsync备份足够快地进行,并且映像上有我要访问的文件。假设我没有存储空间,实际上没有将图像解压缩并dd到驱动器上,但想挂载该图像以从中取出单个文件。...这可能吗? 通常,不会压缩dd映像,这将允许您使用-o loop... 挂载映像,但这不是我的情况... 关于动态安装压缩img的任何建议? 会使用AVFS来“挂载” gz文件,然后挂载内部dd.img工作吗(我认为不是...但是需要验证...)?

7
从文件开头删除字节的最佳方法?
今天,我不得不从800MB的混合文本/二进制文件中删除前1131个字节,这是我为新存储库准备的经过过滤的Subversion转储。最好的方法是什么? 首先我尝试 dd bs=1 skip=1131 if=filtered.dump of=trimmed.dump 但是在跳过之后,这一次将文件的其余部分复制了一个字节,即非常慢。最后,我计算出需要405个字节将其四舍五入为512个可以跳过的三个块 dd if=/dev/zero of=405zeros bs=1 count=405 cat 405zeros filtered.dump | dd bs=512 skip=3 of=trimmed.dump 哪个完成得很快,但肯定有一个更简单/更好的方法?还有我遗忘的其他工具吗?谢谢!
61 dd 

2
dd什么时候适合复制数据?(或何时分别使用read()和write())
简短版本:在什么情况下可以dd安全地用于复制数据,安全意味着不存在由于部分读取或写入而导致损坏的风险? 长版—前言: dd通常用于复制数据,尤其是从设备复制数据或向设备复制数据(示例)。有时,它被赋予了神秘的属性,即能够以比其他工具更低的级别访问设备(实际上,正是设备文件在发挥作用)-但dd if=/dev/sda与相同cat /dev/sda。dd有时被认为是更快,但cat在实践中可以击败它。但是,它dd具有独特的属性,有时使其真正有用。 问题: dd if=foo of=bar实际上与并不相同cat <foo >bar。在大多数unices¹上,dd只需调用一次即可read()。(我发现POSIX对“读取输入块”中的内容构成模糊dd。)如果read()返回部分结果(根据POSIX和其他参考文档,除非实现文档另有说明,否则允许这样做),将复制部分块。确实存在相同的问题write()。 观察:在实践中,我发现它dd可以应付块设备和常规文件,但这可能只是我没有做太多的事情。当涉及管道时,不难dd犯错。例如,尝试以下代码: yes | dd of=out bs=1024k count=10 并检查out文件的大小(可能在10MB以下)。 问题:在什么情况下可以dd安全地复制数据?换句话说,在块大小,实现,文件类型等上的什么条件可以确保dd将复制所有数据? (GNU dd有一个fullblock标志来告诉它调用read()或write()在循环中进行传输,以便传输完整的块。因此dd iflag=fullblock始终是安全的。我的问题是不使用这些标志(在其他实现中不存在)的情况) ¹ 我已经检查过OpenBSD,GNU coreutils和BusyBox。
60 io  dd 

4
dd代表什么?
我非常清楚该命令的功能,但是man dd,请info dd告诉我:“转换并复制文件”,就像GNU Coreutils一样。 谷歌表示,它是医学和不良网络聊天语之间一切的缩写。除了有人说这意味着“数据破坏者”,这是PC取证所使用的东西-如果我的dd破坏了我的数据,我会感到恐惧! 有见识吗?:-) 更新:当然我必须检查行话文件: Unix dd(1)的设计采用了怪异的,明显非Unixy的关键字选项语法,让人联想到IBM System / 360 JCL(对于I / O设备,它有详尽的DD“数据集定义”规范) 听起来仍然很模棱两可,但随后它说: 尽管命令满足了需求,但界面设计显然是个恶作剧。 嘿:-)
42 dd  command-names 

8
将整个分区或硬盘驱动器克隆到稀疏文件
我喜欢将整个分区或整个硬盘驱动器克隆到更大的外部磁盘上,但喜欢创建一个稀疏文件。我经常dd用于克隆,但它不支持稀疏文件。作为解决方法,我使用了类似的方法: cp --sparse=always <(dd if=/dev/sda1 bs=8M) /mount/external/backup/sda1.raw 但是,这对于我的口味来说有点棘手,并且如果中止,也不允许我继续该过程。有趣的是,有一个用于此(ntfsclone)的NTFS工具,但是对于Linux(EXT2-4)的本机文件系统不存在这样的工具。 有没有更好的工具,例如dd,支持稀疏的变体?我没有寻找用于磁盘备份的某些专有软件,而只是想制作一个稀疏的克隆副本,如果需要的话,我可以将其安装为循环设备。

7
如何抑制dd输出?
我有一个bash脚本,可使用创建一些文件dd。问题是dd抛出了大量的输出,这将使我的脚本的输出混乱。经过搜索,我找到了解决方案: dd if=boot1h of="/dev/r$temp1" >& /dev/null 是否有替代方法,或者重定向到/dev/null唯一方法?
35 bash  sudo  su  dd 

5
从硬盘到硬盘的完整DD复制
原始问题: 如果我有两个具有以下特征的相同硬盘驱动器: SATA 6.0 Gb /秒 5400转 3TB 完整的dd副本需要多长时间才能完成? 到目前为止,它已经运行了5个小时,并且仍在运行... 我正在使用Linux Ubuntu 12.04 64bit,并且我正在使用的命令是: dd if=/dev/sdb of=/dev/sdc 更新:1 现在,我可以看到进度,复制430GB已超过6个小时。硬盘为3TB ... 没有更快的方法吗? 更新:2 这似乎比以前要好得多(感谢Groxxda的建议): sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K 对于3TB,ETA大约需要9个小时,而在6小时之后达到430GB之前,所以我猜测使用前一个命令大约需要36个小时。
34 hard-disk  dd  cloning 

2
用dd修补二进制文件
我读过几次(下面)这个引用,最近一次是在这里阅读的,并且不断地困惑于如何dd使用它来修补任何东西,更不用说编译器了: 我30年前在学校使用的Unix系统在RAM和磁盘空间方面非常有限。特别是/usr/tmp文件系统非常小,当有人尝试编译大型程序时会导致问题。当然,无论如何,学生都不应该编写“大型程序”。大型程序通常是从“某处”复制的源代码。我们中的许多人都复制/usr/bin/cc到/home/<myname>/cc,并用来dd修补二进制文件,/tmp而不是来使用/usr/tmp更大的二进制文件。当然,这只会使问题变得更糟-这些副本所占用的磁盘空间在当时确实很重要,并且现在会/tmp定期装满,从而阻止其他用户甚至编辑其文件。他们发现发生了什么事后,系统管理员执行了chmod go-r /bin/* /usr/bin/* 它“解决”了问题,并删除了我们所有的C编译器副本。 (强调我的) 该dd手册页只字未提修补和不认为它可能是重新定意要做到这一点呢。 二进制文件真的可以修补dd吗?这有任何历史意义吗?
32 dd  history  patch 

2
正在运行dd。为什么资源很忙?
我刚刚格式化了microSD卡,并想运行一个dd命令。不幸的是,dd命令失败: $ sudo dd bs=1m if=2016-02-26-raspbian-jessie-lite.img of=/dev/rdisk2 dd: /dev/rdisk2: Resource busy $ 互联网上的每个人都说我需要先卸载磁盘。当然可以,然后继续前进。但是我想了解为什么/在OS X中到底是什么使设备繁忙?我该如何诊断? 到目前为止,我尝试了: 列出打开的文件: $ lsof /dev/disk2 $ lsof /dev/disk2s1 $ 也: $ lsof /Volumes/UNTITLED $ 列出使用该文件的用户: $ fuser -u /dev/disk2 /dev/disk2: $ fuser -u /dev/disk2s1 /dev/disk2s1: $ 也: $ fuser -u /Volumes/UNTITLED $ 检查系统消息: $ sudo dmesg …
31 osx  dd  sd-card  resources 

4
Linux上的Benchmark SSD:如何测量与CrystalDiskmark在Windows中所做的相同的事情
我想对一个ssd进行基准测试(可能使用加密的文件系统),并将其与Windows上crystaldiskmark完成的基准测试进行比较。 那么,如何测量与crystaldiskmark大致相同的东西? 对于第一行(Seq),我认为我可以做类似的事情 LC_ALL=C dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc sudo su -c "echo 3 > /proc/sys/vm/drop_caches" LC_ALL=C dd if=tempfile of=/dev/null bs=1M count=1024 但是我不确定dd参数。 对于随机的512KB,4KB,4KB(队列深度= 32),读取/写入速度测试我不知道如何在Linux中重现测量结果?那我该怎么做呢? 对于测试读取速度,sudo hdparm -Tt /dev/sda对于我来说似乎没有什么意义,因为我希望例如对基准进行测试,例如encfs安装。 编辑 @Alko,@iain 也许我应该写一些关于这个问题的动机:我正在尝试对我的SSD进行基准测试,并比较一些加密解决方案。但这是另一个问题(在我的系统上对不同加密解决方案进行基准测试的最佳方法)。在网上浏览有关ssd和基准测试的信息时,我经常看到用户在论坛上发布其CrystelDiskMark结果。因此,这是该问题的唯一动机。我只想在linux上做同样的事情。对于我的特定基准测试,请参见我的其他问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.