3 trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
6 # https://github.com/kdave/btrfsmaintenance
9 # Man page says we could also use a range, i suppose it would be
10 # logical to use a pattern like 5..10 10..20,
11 # but I don't know if this would help us at all.
12 dusage
="1 5 10 20 30 40 50"
15 e
() { echo "$*"; "$@"; }
17 fnd
="findmnt --types btrfs --noheading"
18 for x
in $
($fnd --output "SOURCE" --nofsroot |
sort -u); do
19 mnt
=$
($fnd --output "TARGET" --first-only --source $x)
20 [[ $mnt ]] ||
continue
21 echo "Before balance of $mnt"
22 e btrfs filesystem df
$mnt
24 if btrfs filesystem df
$mnt |
grep -q "Data+Metadata"; then
25 for usage
in $dusage; do
26 e btrfs balance start
-v -dusage=$usage -musage=$usage $mnt
29 e btrfs balance start
-dusage=0 $mnt
30 for usage
in $dusage; do
31 e btrfs balance start
-v -dusage=$usage $mnt
33 e btrfs balance start
-musage=0 $mnt
34 for usage
in $musage; do
35 e btrfs balance start
-v -musage=$usage $mnt
38 echo "After balance of $mnt"
39 btrfs filesystem df
$mnt
43 btrfs scrub status
$mnt | \
44 sed -rn 's/^\s*scrub started at (.*) and finished.*/\1/p'
47 date=$
(date --date="$date" +%s
)
48 # if date is sooner than 90 days ago
49 # the wiki recommends 30 days or so, but
50 # it makes the comp lag like shit for a day,
51 # so I'm going with 90 days.
52 if (( $date > `date +%s` - 60*60*24*30 )); then
53 echo "skiping scrub of $mnt"
57 btrfs scrub start
-Bd $mnt