Saya juga bertanya-tanya kapan penghapusan yang tahan lama akan selesai jadi saya membuat sepotong kode shell ini:
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
Ini akan memberi Anda bilah kemajuan yang bagus seperti ini:
0:13:54 [0,00 B/s] [16,0MiB/s] [> ] 1% ETA 19:23:19
Gagasan umum adalah menggunakan pvuntuk menampilkan kemajuan. Karena perintah itu hanya memungkinkan untuk memonitor byte yang mengalir melalui pipa yang kita gunakan dduntuk menghasilkan jumlah nol yang tepat dan menyalurkannya pv.
Keuntungan dari metode ini adalah Anda mendapatkan bilah kemajuan yang bagus. Namun, karena sepertinya btrfsselalu menghapus data satu GB pada satu waktu, dibutuhkan beberapa waktu hingga perbedaan baru dalam ukuran byte dapat diamati.
Untuk mengatasi masalah ini, bendera -aditambahkan ke bendera default pvuntuk membuatnya menampilkan tingkat transmisi rata-rata (karena laju transmisi normal saat ini adalah 0 sebagian besar waktu).
Saya menyadari ini bukan solusi terbaik tetapi yang terbaik yang bisa saya dapatkan. Jika seseorang memiliki ide untuk perbaikan, beri tahu saya! :)