shell-base/modules/btrfs.mod

71 lines
1.9 KiB
Bash

#!/bin/bash
make_subvol() {
local usesudo
local uid
local gid
[[ $EUID -ne 0 ]] && usesudo=sudo
uid=${2:-$USER}
gid=${3:-$uid}
echo $usesudo btrfs subvolume create $1
$usesudo btrfs subvolume create $1
echo $usesudo chown $uid:$gid $1
$usesudo chown $uid:$gid $1
}
make_base_subvols() {
svols="shell admin opt data docker images temp"
BTRFSDATAROOT=${BTRFSDATAROOT:-/mnt/data}
# cd $BTRFSDATAROOT || exit
for svol in $svols; do
make_subvol $BTRFSDATAROOT/$svol $@
done
}
#ssudo mount -o subvol=opt /dev/sda4 /test
alias btvl="sudo btrfs subvolume list"
snapshot_restore () {
local src=$1
local dest=$2
local name=${3:-$(echo $src| rev | cut -f 2- -d '.' | rev)}
local usesudo
echo copying $src at $PWD to $2 then renaming to $name
# TODO check for snapshot, strip volume from source path, remove extra snapshot when done
[[ $EUID -ne 0 ]] && usesudo=sudo
$usesudo btrfs send $src | $usesudo btrfs -q receive $dest
# cd $2 || return
$usesudo btrfs subvolume snapshot $dest/$src $dest/$name
# todo check for snapshot then delete transfered one
}
# ALL ALL = (root) NOPASSWD:/bin/btrfs
subvolume_size () {
local all;
[[ $1 == "-a" ]] && all=true
if [[ $all ]]; then
sudo btrfs qgroup show "${2:-$PWD}" --kbytes | tail -n +3
str=$(sudo btrfs qgroup show "${2:-$PWD}" --kbytes | tail -n +3);
else
sudo btrfs qgroup show "${2:-$PWD}" --kbytes | grep $1
str=$(sudo btrfs qgroup show "${2:-$PWD}" --kbytes | grep $1)
fi
# echo $str
subvolumeFolderSize=0;
while read line; do
FIELDS=( $line )
thisLineKb="${FIELDS[2]/'.00KiB'/''}";
# echo $thisLineKb
subvolumeFolderSize=$((subvolumeFolderSize+thisLineKb));
done <<< "$str"
[[ $all ]] && echo "size of entire filesystem at ${2:-$PWD}" || echo size of subvolumes/snapshots $1 at "${2:-$PWD}"
echo $subvolumeFolderSize KB
echo "~ $((subvolumeFolderSize/1024)) MB"
echo "~ $((subvolumeFolderSize/1024/1024)) GB"
}