按照此页面上的说明,该页面最后显示了一个dd命令和一个sync选项。命令如下:
xzcat ~/ubuntu.img.xz | sudo dd of=/dev/sdX bs=32M sync
Run Code Online (Sandbox Code Playgroud)
我知道dd它是什么以及它是如何工作的,但我从来没有听说过或使用过sync它的选项,它的手册页条目是这样的:
sync pad every input block with NULs to ibs-size; when used with
block or unblock, pad with spaces rather than NULs
Run Code Online (Sandbox Code Playgroud)
NUL它是什么以及为什么要填充到ibs-size,为什么还要填充数据块并sync在dd命令中使用该选项?为什么不保持简单和容易?
当我尝试sync使用适当的位置和值运行命令时,我收到以下错误:
dd: unrecognized operand ‘sync’
Try 'dd --help' for more information.
Run Code Online (Sandbox Code Playgroud)
mur*_*uru 30
您误读了命令。它的:
xzcat ~/ubuntu.img.xz | sudo dd of=/dev/sdX bs=32M
sync
Run Code Online (Sandbox Code Playgroud)
sync是一个单独的命令,在这里。见man 1 sync:
NAME
sync - flush file system buffers
SYNOPSIS
sync [OPTION]
DESCRIPTION
Force changed blocks to disk, update the super block.
Run Code Online (Sandbox Code Playgroud)
一旦您想到缓存,就很明显为什么要使用它。
至于dd您阅读的选项,它是conv选项的值:
Each CONV symbol may be:
ascii from EBCDIC to ASCII
...
sync pad every input block with NULs to ibs-size; when used with
block or unblock, pad with spaces rather than NULs
Run Code Online (Sandbox Code Playgroud)
如果它被使用(它不是),它将被这样使用:
dd ... conv=sync
Run Code Online (Sandbox Code Playgroud)
dd 一次会读入一块数据(块大小由用户指定)。Dd 可能会读取比用户指定的更短的块,无论是在文件末尾还是由于源设备的属性;这称为部分记录。默认情况下,dd 将写出一个与其读取的大小相同的块。
Dd 将重复此操作,直到达到指定的计数,或者在输入上看到 eof,或者在输入或输出上出现错误。完成后,dd 报告其读取和写入的完整和部分记录的数量。
此行为适合在文件系统内或通过 TCP 网络连接复制普通文件,因为这被视为字节流。但其他文件系统对象(例如原始 DVD 和磁带)要求写入大小在特定范围内并且是某个量(例如 512 或 2048 字节)的整数倍。例如,如果您有一个包含 255 个磁道、63 512 字节扇区的磁盘映像,并且想要写入需要 1024 字节块大小的磁带,则需要执行以下操作
dd if=disk.img of=/dev/rmt0 bs=1k conv=sync
Run Code Online (Sandbox Code Playgroud)
确保 dd 不会尝试在末尾写出 512 字节块。末尾较短的块将用零或空格填充。用零填充是一种安全、常见的选择。dd 用空格填充的选项在另一种情况下非常有用 - 将具有可变长度行的文件转换为具有固定长度行的文件。
| 归档时间: |
|
| 查看次数: |
60328 次 |
| 最近记录: |