Eu me encontro frequentemente em uma situação quando pv image_file | dd of=/dev/slow_usb_stick
mostra que as primeiras centenas de megabytes voam (para o buffer), então a transferência desacelera muito. Quando dd
sai, há buffer inteiro para liberar. Eu então sync
para remover o bastão e tenho que esperar mais alguns minutos porque o buffer é grande e o dispositivo está lento.
Então talvez seja sobre paciência. Suponho que o tamanho do buffer depende da memória disponível. Às vezes, o buffer pode ser muito grande e sync
"fica preso", às vezes não. Isso é um palpite.
Outro fenômeno que observei: o sync
libera todos os buffers (ou seja, para todos os dispositivos). Algumas vezes eu queria remover o pendrive USB (depois de dd
), invoquei sync
para fazer isso, mas ao mesmo tempo meu HDD estava ocupado com operações massivas de gravação. Os dados do HDD continuavam chegando muito rápido para que o buffer ficasse vazio. Congelado sync
não teve nada a ver com dd
. Por esse motivo, desejo que sync
possa segmentar um dispositivo específico e sair, independentemente de todos os outros dispositivos.
Editar:
Meu desejo se tornou realidade. No Ubuntu 16.04.2 LTS eu tenho sync (GNU coreutils) 8.25
que pode direcionar sistemas de arquivos específicos. Viva!