ディスククォータに達した後に最も古いBTRFSスナップショットを削除する単純なスクリプトがないのは奇妙に思えます。これはBTRFSツールファミリーの一部でしたが、現在はそうではありません。
私はbashの優れたプログラマーではないので、空きディスク容量を確認し、それが特定のしきい値に達した場合、最も古いBTRFSスナップショットを見つけて削除する方法を知っている人はいますか?どうもありがとう!
OK、答えはないので、私自身の解決策が役立つことを願っています:
#!/bin/bash
value=80 #Disk % threshold - if disk full above, then oldest snapshots will be deleted until disk is below threshold
for i in 1 2 3 4 5 6 7 8 9
do
echo Attempt: $i of 9
echo Getting snapshot list...
to=$(Sudo btrfs subvol list /mnt/timeshift/backup/timeshift-btrfs/snapshots)
search="snapshots"
prefix=${to%%$search*}
position=$(awk -v a="$to" -v b=$search 'BEGIN{print index(a,b)}')
fn=$(echo $to | cut -c $(($position+10))-$(($position+28)))
echo Oldest snapshot name: $fn
diskfull=$(df -hP / | awk '{print $5}' |tail -1|sed 's/%$//g')
if [ $value -gt $diskfull ]; then
echo Threshold $value% greater than Used disk $diskfull%
echo should not delete any more snapshots
echo Creating one more snapshot
Sudo timeshift --create --comments "automatic"
exit 1
else
echo Threshold $value% is less than Used disk $diskfull%
echo Deleting snapshot $fn...
Sudo timeshift --delete --snapshot "$fn"
echo Waiting for changes to be written...
Sudo btrfs subvolume sync /
echo Checking if disk space resolved...
fi
done