sync
使用 擦除 USB 或任何设备时,是否有必要将缓存的写入与命令同步到持久存储/dev/urandom
?
这是一种常见的做法,即dd if=/dev/urandom of=/dev/sdx && sync
。
但这真的有必要吗?可以省略这个sync
命令吗?
请注意这个问题不是指实用程序conv=sync
的选项dd
,而是指sync
作为一个独立的命令,也可以与dd
.这里有一个参考同步,这里引用了转换=同步。两者都来自https://www.kernel.org/doc/man-pages/。
谢谢
答案1
sync
没有专门使用,因为/dev/urandom
涉及;它用于确保所有挂起的写入已发送到设备。这在使用可移动设备时尤其重要:运行sync
并等待其完成,可确保可以安全地删除设备。
擦除设备时,如果省略sync
并断开设备连接,则可能尚未完成擦除设备...
答案2
该sync()
调用与文件系统相关,而不是与设备相关。
如果您写入块设备,sync()
可能会导致缓冲区刷新,但如果您使用原始设备,如本例中所建议的,sync()
则没有意义。
警告:在 Linux 上,可能很难找到相关的原始设备。查看Linux文档了解如何获取相关的原始设备。