eck*_*kza 153 osx file-transfer dd hard-disk
我还没有使用dd那么多,但到目前为止它还没有让我失望。现在,我已经dd进行了 12 多个小时 - 我正在将图像写回它来自的磁盘 - 我有点担心,因为我能够dd从磁盘到图像大约7小时。
我在配备 Core 2 Duo 的 MacBook 上运行 OSX 10.6.6,频率为 2.1ghz/core,内存为 4gb。我正在从 7200rpm 硬盘驱动器(引导驱动器)上的 .dmg 中读取数据,并且正在写入通过 SATA-to-USB 连接器连接的 7200rpm 驱动器。我默认保留了块大小,图像大约为 160GB。
编辑:而且,经过 14 小时的纯压力,dd毕竟工作得很好。不过,下一次,我将运行它pv并使用strace. 感谢大家的帮助。
Cal*_*leb 181
您可以dd使用该kill命令发送某个信号,使其输出当前状态。信号INFO在 BSD 系统(包括 OSX)和USR1Linux 上。在你的情况下:
kill -INFO $PID
Run Code Online (Sandbox Code Playgroud)
您可以$PID使用ps命令找到进程ID(上面);或者在 mac os x 上查看pgrep 和 pkill 替代品以获得更方便的方法。
更简单地说,正如AntoineG在他的回答中指出的那样,您可以ctrl-T在运行 dd 的 shell 中键入以向其发送INFO信号。
作为 Linux 上的示例,您可以使所有活动dd进程输出状态如下:
pkill -USR1 -x dd
Run Code Online (Sandbox Code Playgroud)
输出其状态后,dd将继续应对。
小智 107
在OS X(在Linux上没有尝试),你可以简单地输入Ctrl+T终端运行dd。它将打印与 相同的输出kill -INFO $PID,加上 CPU 使用率:
load: 1.40 cmd: dd 34536 uninterruptible 3.49u 64.58s
5020305+0 records in
5020304+0 records out
2570395648 bytes transferred in 4284.349974 secs (599950 bytes/sec)
Run Code Online (Sandbox Code Playgroud)
我在阅读此线程时发现了它,并尝试在我的终端中打开一个新选项卡,但将?+T与Ctrl+混合T。
Gil*_*il' 27
对于dd,您可以发送信号。对于正在读取或写入文件的其他命令,您可以使用lsof.
lsof -o -p1234 # where 1234 is the process ID of the command
lsof -o /path/to/file
Run Code Online (Sandbox Code Playgroud)
如果您提前计划,请将数据通过pv.
phi*_*lfr 13
我通常会附加strace到这样一个正在运行的进程(带有-p $PID选项),以查看它是否在系统调用中保持阻塞状态,或者它是否仍然处于活动状态。
或者,如果您对向正在运行的 dd 发送信号感到紧张,请启动另一个 dd 以验证它是否有效。
Chi*_*g64 13
从coreutilsv8.24 开始,dd原生支持显示进度。只需添加选项status=progress。
例子:
dd if=arch.iso of=/dev/sdb bs=4M status=progress
Run Code Online (Sandbox Code Playgroud)
Jas*_*n C 11
下次,您可以pv从头开始使用(如果它可以通过您的包管理器使用,请安装它)。这是一个实用程序,其唯一目的是将输入管道输出到输出并监控进度和速度。
然后,为了将图像写入驱动器,假设块大小为 4MB:
pv -ptearb /path/to/image.bin | dd iflag=fullblock of=/dev/whatever bs=4M
Run Code Online (Sandbox Code Playgroud)
除了初始缓冲(由最终同步偏移,dd如果您愿意,可以通过它完成),这将显示进度条、平均速度、当前速度和预计到达时间。
该iflag=fullblock选项强制 dd 通过 获取完整的输入块pv,否则您将受管的块大小支配。
相反,使用 dd 读取,使用 pv 写入,但如果源是块设备,则必须明确指定大小。对于 4GB 设备:
dd if=/dev/whatever bs=4M | pv -ptearb -s 4096m > /path/to/image.bin
Run Code Online (Sandbox Code Playgroud)
您还可以自动确定大小,例如:
dd if=/dev/whatever bs=4M | pv -ptearb -s `blockdev --getsize64 /dev/whatever` > /path/to/image.bin
Run Code Online (Sandbox Code Playgroud)
无论您按什么顺序执行操作dd和顺序都没有关系pv,这完全与性能相关——如果您正在读取或读取的设备对于您想要使用dd而不是pv访问该设备的某些块大小具有最佳性能。dd如果您愿意,您甚至可以在两端粘贴 a ,如果您不在乎,则根本不粘贴:
pv -ptearb /path/to/image.bin > /dev/whatever
sync
Run Code Online (Sandbox Code Playgroud)
小智 5
ddrescue 将在运行时为您提供统计信息。
演示:http : //www.youtube.com/watch?v= vqq9A01geeA#t= 144s
| 归档时间: |
|
| 查看次数: |
179674 次 |
| 最近记录: |