Estou escrevendo um arquivo (vamos chamá-lo, xyz.bin
) para uma unidade flash USB ... a unidade flash monta sob o caminho: / media / myUsb ...
Para evitar a perda de dados, estou fazendo um comando de sincronização como este:
sync -f /media/myUsb
Em seguida, eu desanexe / removi o flashDrive usando outros comandos como este: remoção segura
O problema:
A equipe que consome esse flashdrive está me dizendo que às vezes o arquivo é corrompido ... Estou depurando meu aplicativo para descartar qualquer coisa, mas fico preocupado se o sync
commnand está sendo feito corretamente ou se eu entendi mal o sync man page
.
EDITAR
Eu trago outros detalhes sobre o processo que está sendo executado (se isso ajudar) ... Usando o JAVA:
sync -f /media/myUsb
(usando o Processo Api udisksctl unmount -b <usbMountPoint>
... Se o comando retornar OK (novamente, eu espero por ele ...), então, eu executo udisksctl power-off -b <usbDevice>
Se o comando retornar OK (novamente, espero por ele ...), presumo que a gravação e a desanexação foram bem-sucedidas! Então, eu indico ao operador para remover o pendrive ou flashdrive ...
Então, outra equipe recebe o pendrive e tenta ler o arquivo que foi escrito ... Então, as vezes, tudo funciona bem ... outras vezes, eles disseram que o arquivo vem corrompido e eles não podem ler o arquivo. ..
Neste momento, estou fazendo um teste diferente para descobrir onde está o problema ... No entanto, minha dúvida aqui é: Os comandos do SO executados estão sendo executados corretamente ou apenas invoco algo que tenha algum sentido?