Ben de bu kadar küçük bir kabuk kodu parçası ile geldi bu yüzden uzun ömürlü bir silmek ne zaman biteceğini merak ediyordum:
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
Bu size böyle güzel bir ilerleme çubuğu verecektir:
0:13:54 [0,00 B/s] [16,0MiB/s] [> ] 1% ETA 19:23:19
Genel fikir pvilerlemeyi göstermek için kullanmaktır . Bu komut yalnızca kullandığımız bir borudan akan baytların izlenmesine izin verdiği içindd , uygun miktarda sıfır oluşturmak ve bunları içine borulamak için kullanırız pv.
Bu yöntemin avantajı, güzel bir ilerleme çubuğu elde etmenizdir. Ancak, göründüğü içinbtrfs her zaman bir kerede bir GB veri sildiğinden, bayt boyutlarında yeni bir farkın görülmesi biraz zaman alır.
Bu sorunu gidermek için bayrak -a , pvortalama bir iletim hızı görüntülemesi için varsayılan bayraklarına eklenir (çünkü normal akım iletim hızı çoğu zaman 0 olacaktır).
Bunun en iyi çözüm değil, bulabileceğim en iyi çözüm olduğunun farkındayım. Birisi iyileştirmeler için fikirleri varsa lütfen bana bildirin! :)