Je me demandais également quand une suppression durable se terminerait, alors j'ai trouvé ce petit morceau de code shell:
get_bytes() {
btrfs device usage --raw /mnt/data | egrep -- '-[0-9]+' | sed -E 's/[^0-9]+([0-9]+)/\1/'
}
prev=$(get_bytes)
while [ 1 ]; do
current=$(get_bytes)
diff=$((current-prev))
if [ "$diff" -gt 0 ]; then
dd if=/dev/zero iflag=count_bytes count="$diff" 2>/dev/null
fi
prev="$current"
sleep 1
done | pv -petraW -s $(get_bytes) >/dev/null
Cela vous donnera une belle barre de progression comme celle-ci:
0:13:54 [0,00 B/s] [16,0MiB/s] [> ] 1% ETA 19:23:19
L'idée générale est d'utiliser pv
pour afficher les progrès. Étant donné que cette commande permet uniquement de surveiller les octets circulant dans un tuyau, nous utilisons dd
pour générer une quantité appropriée de zéros et les diriger vers pv
.
L'avantage de cette méthode est que vous obtenez une belle barre de progression. Cependant, comme il semble btrfs
toujours supprimer les données un Go à la fois, cela prend un certain temps jusqu'à ce qu'une nouvelle différence dans la taille des octets puisse être observée.
Pour résoudre ce problème, l'indicateur -a
est ajouté aux indicateurs par défaut de pv
pour lui faire afficher un taux de transmission moyen (car le taux de transmission actuel normal sera 0 la plupart du temps).
Je me rends compte que ce n'est pas la meilleure solution mais la meilleure que j'ai pu trouver. Si quelqu'un a des idées d'améliorations, faites-le moi savoir! :)