Eu tive o mesmo problema ao fazer um backup com o rsync, porque ele precisa de muitos minutos para compilar a lista de backup e o disco rígido USB desaparece algumas vezes. O programa C no outro segmento parece excessivamente complicado. Eu uso esse script, que grava um arquivo com a data atual a cada minuto no disco e, em seguida, sincroniza os sistemas de arquivos, o que causa a gravação física de todos os caches de gravação que podem estar lá nos discos:
#!/bin/bash
while true; do
date | tee /media/frank/backup/ping.txt
sync
sleep 60
done
Substitua o caminho para o seu disco USB, salve-o como ping.sh e inicie-o em outro terminal. O comando "tee" mostra a data atual no terminal, para ver se ainda está em execução.