diff --git a/Archive/snapshot.sh b/Archive/snapshot.sh index b1f84395..b95ea137 100755 --- a/Archive/snapshot.sh +++ b/Archive/snapshot.sh @@ -2,6 +2,11 @@ # XXX need: # - protocol (command) to create archive root +# manually: +# - copy tree +# - run snapshot.sh +# script: +# XXX # - protocol to create snapshots # - sync-flash.sh ??? # - protocol to restore stuff -- simply copy??? @@ -12,6 +17,16 @@ # - a way to maintain a set number of snapshots... # +SNAPSHOT_DIR=.snapshots +SUBVOLUME_DIR=media + + +# run in script dir (not cwd)... +DIR=`dirname "$0"` +if ! [ -z "$DIR" ] ; then + cd "$DIR" +fi + # check if on btrfs filesystem... # XXX also check if btrfs command is available... if ! btrfs filesystem usage . > /dev/null ; then @@ -29,30 +44,32 @@ createTree(){ # create ./media... # XXX check if not a directory... -if ! [ -e ./media ] ; then - btrfs subvolume create ./media +if ! [ -e "$SUBVOLUME_DIR" ] ; then + btrfs subvolume create "$SUBVOLUME_DIR" # XXX build tree -- ImageGrid # convert ./media to a subvolume... -elif [ "$(stat --format=%i ./media)" == 256 ] ; then - btrfs subvolume create ./media_subvolume - #mv ./media/{,.}* ./media_subvolume/ +elif [ "$(stat --format=%i "$SUBVOLUME_DIR")" == 256 ] ; then + mkdir bak + mv "$SUBVOLUME_DIR" bak/ + btrfs subvolume create "$SUBVOLUME_DIR" cp --archive --one-file-system --reflink=always \ - ./media/{,.}* \ - ./media_subvolume/ - mv ./media{,.bak} - mv ./media{_subvolume,} + ./bak/"$SUBVOLUME_DIR"/{,.}* \ + "$SUBVOLUME_DIR"/ fi -mkdir -p ./.snapshots +mkdir -p "$SNAPSHOT_DIR" # XXX should this be more human readable??? # ...a date + number maybe??? SNAPSHOT=$(( - $( ls .snapshots \ + $( ls "$SNAPSHOT_DIR" \ | sort -n \ | tail -n 1 ) \ + 1 )) -btrfs subvolume snapshot -r ./media .snapshots/${SNAPSHOT} +btrfs subvolume snapshot -r "$SUBVOLUME_DIR" "${SNAPSHOT_DIR}/${SNAPSHOT}" + + +# vim:set nowrap nospell :