1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #!/bin/bash
- # search and destroy garbage files in root
- find / -type f -iname "thumbs.db" -exec rm {} \; 2> /dev/null &
- find / -type f -iname ".ds_store" -exec rm {} \; 2> /dev/null &
- find / -type f -name '._*' -exec rm -rf {} \; 2> /dev/null &
- # functions for asynchronous operations
- cleanup_ext4() {
- fstrim "$1"
- e4defrag "$1"
- }
- cleanup_btrfs() {
- fstrim "$1"
- btrfs balance start -dusage=1 "$1"
- btrfs balance start -musage=1 "$1"
- btrfs balance start -dusage=5 "$1"
- btrfs balance start -musage=5 "$1"
- btrfs balance start -dusage=10 "$1"
- btrfs balance start -musage=10 "$1"
- btrfs balance start -dusage=25 "$1"
- btrfs balance start -musage=25 "$1"
- btrfs balance start -dusage=50 "$1"
- btrfs balance start -musage=50 "$1"
- btrfs scrub start -qdB "$1"
- }
- # defragment and fstrim ext4 weekly
- for filesystem in $(mount -t ext4 | awk '{print $3}'); do
- cleanup_ext4 "$filesystem" &
- done
- # defragment and rebalance ssd-only (hdd are too slow) btrfs weekly
- for filesystem in $(mount -t btrfs | grep "ssd" | awk '{print $3}'); do
- cleanup_btrfs "$filesystem" &
- done
- # wait for jobs to complete
- for j in $(jobs -p); do
- wait $j
- done
- # cleanup journalctl
- journalctl --vacuum-time=10d
|