Esta resposta deve responder parcialmente à sua pergunta. Basicamente, dd
não ignora os caches de disco do kernel ao gravar no dispositivo, e usar esse oflag
sincronizará as gravações de disco no disco.
O comando sync
e oflag=sync
farão o mesmo trabalho. A única diferença que posso ver aqui é que o comando sync
irá gravar no disco todos os caches de todos os discos, uma máquina que está bastante ocupada escrevendo para outros discos terá uma resposta mais lenta (você pode até não sentir).
Citando a documentação de sync
:
Description
sync writes any data buffered in memory out to disk. This can include (but is not limited to) modified superblocks, modified inodes, and delayed reads and writes. This must be implemented by the kernel; The sync program does nothing but exercise the
sync(2)
system call.