또한 오래 지속되는 삭제가 언제 완료되는지 궁금 해서이 작은 셸 코드를 생각해 냈습니다.
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
이렇게하면 다음과 같은 멋진 진행률 표시 줄이 나타납니다.
0:13:54 [0,00 B/s] [16,0MiB/s] [> ] 1% ETA 19:23:19
일반적인 아이디어는 pv
진행 상황을 표시하는 데 사용 하는 것입니다 . 이 명령을 사용하면 파이프를 통해 흐르는 바이트 만 모니터링 할 수 있으므로 dd
적절한 양의 0을 생성하고에 파이프합니다 pv
.
이 방법의 장점은 멋진 진행률 표시 줄을 얻는 것입니다. 그러나 btrfs
항상 한 번에 한 GB 씩 데이터를 삭제 하는 것처럼 보이기 때문에 새로운 바이트 크기 차이가 관찰 될 때까지 시간이 걸립니다.
이 문제를 해결하기 위해 플래그 -a
가 기본 플래그에 추가되어 pv
평균 전송 속도를 표시합니다 (정상 전류 전송 속도는 대부분 0이므로).
나는 이것이 최선의 해결책이 아니라 내가 생각해 낼 수있는 최선이라는 것을 알고 있습니다. 누군가 개선을위한 아이디어가 있다면 알려주세요! :)