É uma boa ideia primeiro acumular os dados e depois colocá-los no lugar. Dessa forma, o arquivo de destino sempre será válido, mesmo enquanto o programa acumulador de dados estiver em execução.
set -e
target=/etc/pacman.d/mirrorlist
reflector -l 5 -r -o "$target.tmp"
mv -f -- "$target.tmp" "$target"
Se reflector
não relatar corretamente erros retornando um status diferente de zero, adicione seu próprio teste de validação antes do comando mv
, por exemplo, test -s "$target.tmp"
para testar se o arquivo não está vazio.
Se você quiser manter um backup da versão antiga, adicione ln -f -- "$target" "$target.old" || true
antes do comando mv
.