From 7f5e3877cb93adb0ea948e670021617b14cd0be9 Mon Sep 17 00:00:00 2001 From: David Kebler Date: Sat, 20 Apr 2024 16:43:25 -0700 Subject: [PATCH] add readonly flag to folder snapshot add new function snapshot_send to send a snapshot to another mounted partition or drive --- modules/filesystem/btrfs/btrfs.mod | 37 ++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/modules/filesystem/btrfs/btrfs.mod b/modules/filesystem/btrfs/btrfs.mod index 1bde042..8bced0a 100644 --- a/modules/filesystem/btrfs/btrfs.mod +++ b/modules/filesystem/btrfs/btrfs.mod @@ -101,17 +101,50 @@ find_subvolumes() { } folder_snapshot() { - + if [[ $1 == "-r" ]];then + readonly=-r + shift 1 + else + readonly="" + fi for sv in $(find_subvolumes $1 1); do if [[ -d $2/$sv ]]; then echo snapshot $sv already exists in $2. You must manually delete target snapshots! else - sudo $BTRFS_BIN sub snap $1/$sv $2 + sudo $BTRFS_BIN sub snap $readonly $1/$sv $2 fi done } + +snapshot_send() { + if [[ $1 == "-e" ]];then + dr="" + shift 1 + else + echo "snapshot_send <-e> " + echo preface with -e to execute + dr="echo" + fi + temp="$(dirname $1)/tmp_send" + name=$(basename $1) + name=$(echo $name | cut -f 1 -d '.') + ext="$(echo $name | cut -s -f 2 -d '.')" + [[ $ext ]] && ext=".$ext" + [[ $3 ]] && ext=".$3" + sudo mkdir $temp + $dr sudo $BTRFS_BIN sub snap -r $1 $temp/$name$ext + if [[ $dr ]]; then + $dr "sudo $BTRFS_BIN send $temp/$name$ext | btrfs receive $2" + else + sudo $BTRFS_BIN send $temp/$name$ext | btrfs receive $2 + fi + $dr sudo $BTRFS_BIN sub del $temp/$name$ext + ls -la $2 + sudo rm -r $temp +} + mount_subvolume () { # echo sudo mount $1 -o subvol=$2 $3 if mountpoint $3 &> /dev/null; then