From 108e57ac29b450d0fa38a7a6628e8eb420247e15 Mon Sep 17 00:00:00 2001 From: Jarno Rankinen Date: Wed, 5 Aug 2020 09:15:58 +0300 Subject: [PATCH 1/3] Updated helptext --- snapsh | 67 +++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 52 insertions(+), 15 deletions(-) diff --git a/snapsh b/snapsh index b2705f1..c389931 100755 --- a/snapsh +++ b/snapsh @@ -29,15 +29,16 @@ DESCRIPTION="" help() { - printf "Usage: - snapsh [OPTIONS] + printf "Usage:\n +snapsh [OPTIONS] Options: -h, --help Display this help message - -d STR, --description STR Add a description for the snapshot displayed in the - snapshots listing. Must be used before -s, e.g. - snapsh -d \"A snapshot\" -s root -s SUBVOL, --snapshot SUBVOL Take a snapshot of subvolume named SUBVOL. + -d STR, --description STR Add a description for the snapshot displayed in the + snapshots listing. + -t TYPE, --type TYPE Set the type of snapshot, where TYPE=manual|auto|boot|backup + Can be used with -l, --list to filter results -l, --list List snapshots -r NUMBER, --remove NUMBER Remove snapshot NUMBER. See snapshot numbers with snapsh -l @@ -65,6 +66,11 @@ snapshot() { EXIT_CODE=1 fi else + # TYPE defaults to manual + if [[ -z "${SET_TYPE}" ]]; then + SET_TYPE="manual" + fi + printf "Creating snapshot of subvolume ${SUBVOLUME} as ${SUBVOLUME}_snapshot_${TIMESTAMP}\n" # Create info file for listing snapshots @@ -72,7 +78,7 @@ snapshot() { printf "DATE=\"$(date)\" SOURCE_SUBVOLUME=\"${SUBVOLUME}\" DESCRIPTION=\"${DESCRIPTION}\" - TYPE=\"manual\"\n" > ${TOPLEVEL}/${SUBVOLUME}/.snapsh + TYPE=\"${SET_TYPE}\"\n" > ${TOPLEVEL}/${SUBVOLUME}/.snapsh # Create readonly subvolume ${BTRFS_EXECUTABLE} subvolume snapshot -r ${TOPLEVEL}/${SUBVOLUME} ${SNAPSHOTS_LOCATION}/${SUBVOLUME}_snapshot_${TIMESTAMP} @@ -85,7 +91,7 @@ snapshot() { DATE=$(date) SOURCE_SUBVOLUME=${SUBVOLUME} DESCRIPTION=${DESCRIPTION} - TYPE=\"manual\"\n" + TYPE=\"${SET_TYPE}\"\n" fi @@ -99,8 +105,14 @@ list() { NUM=1 printf "%6s %s %s %26s %s %s %6s %s %s\n" "Number" "|" "Time:" "|" "Source" "|" "Type" "|" "Description" for snapshot in ${SNAPSHOTS_LOCATION}/*/; do - . ${snapshot}/.snapsh - printf "%8s %32s %8s %8s %s\n" "${NUM} |" "${DATE} |" "${SOURCE_SUBVOLUME} |" "${TYPE} |" "${DESCRIPTION}" + if [[ -z "${SET_TYPE}" ]]; then + . ${snapshot}/.snapsh + printf "%8s %32s %8s %8s %s\n" "${NUM} |" "${DATE} |" "${SOURCE_SUBVOLUME} |" "${TYPE} |" "${DESCRIPTION}" + elif [[ -n "${SET_TYPE}" ]]; then + . ${snapshot}/.snapsh + [[ "${SET_TYPE}" == "${TYPE}" ]] && printf "%8s %32s %8s %8s %s\n" "${NUM} |" "${DATE} |" "${SOURCE_SUBVOLUME} |" "${TYPE} |" "${DESCRIPTION}" + fi + let NUM=NUM+1 done exit 0 @@ -124,7 +136,7 @@ remove() { TARGET=${SNAPSHOTS[${INDEX}]} . ${TARGET}/.snapsh - printf "Delete snapshot ${REMOVE_TARGET}: ${DATE}, subvolume ${SOURCE_SUBVOLUME}, ${DESCRIPTION} (y/n)? " + printf "Delete snapshot ${REMOVE_TARGET}: ${DATE}, source subvolume ${SOURCE_SUBVOLUME}, ${TYPE}, ${DESCRIPTION} (y/n)? " read -n 1 if [[ "${REPLY}" == "y" ]]; then printf "\n" @@ -215,11 +227,11 @@ fi # Options parsing: -OPTIONS=$(getopt -a -n snapsh -o hs:d:lr: --long help,snapshot:,description:,list,remove:,rollback: -- "$@") +OPTIONS=$(getopt -a -n snapsh -o hs:d:lr:t: --long help,snapshot:,description:,list,remove:,rollback:,type: -- "$@") # Invalid options (getopt returns nonzero) if [[ "$?" -ne 0 ]]; then - printf "Error Parsing options\n" + printf "Invalid options.\n" help exit 1 fi @@ -241,12 +253,12 @@ while true; do -s | --snapshot) SUBVOLUME="$2" - snapshot + SNAPSHOT=true shift 2 ;; -l | --list) - list + LIST=true shift ;; @@ -261,9 +273,34 @@ while true; do rollback shift 2 ;; + + -t | --type) + case "$2" in + manual) + SET_TYPE="manual";; + auto) + SET_TYPE="auto";; + boot) + SET_TYPE="boot";; + backup) + SET_TYPE="backup";; + *) + printf "\nIncorrect type value.\n" + exit 1;; + esac + shift 2 + ;; - + --) + shift + break + ;; esac done +if [[ -n "${SNAPSHOT}" ]]; then + snapshot +elif [[ -n "${LIST}" ]]; then + list +fi \ No newline at end of file From 8a6655214a6fe7317b9aa1ae876408fc0041d109 Mon Sep 17 00:00:00 2001 From: Jarno Rankinen Date: Wed, 5 Aug 2020 09:18:30 +0300 Subject: [PATCH 2/3] Revert "Updated helptext" This reverts commit 4c834e8c1b4ef97ab7dd65378f9252c7490cbe0e. --- snapsh | 67 +++++++++++++--------------------------------------------- 1 file changed, 15 insertions(+), 52 deletions(-) diff --git a/snapsh b/snapsh index c389931..b2705f1 100755 --- a/snapsh +++ b/snapsh @@ -29,16 +29,15 @@ DESCRIPTION="" help() { - printf "Usage:\n -snapsh [OPTIONS] + printf "Usage: + snapsh [OPTIONS] Options: -h, --help Display this help message - -s SUBVOL, --snapshot SUBVOL Take a snapshot of subvolume named SUBVOL. -d STR, --description STR Add a description for the snapshot displayed in the - snapshots listing. - -t TYPE, --type TYPE Set the type of snapshot, where TYPE=manual|auto|boot|backup - Can be used with -l, --list to filter results + snapshots listing. Must be used before -s, e.g. + snapsh -d \"A snapshot\" -s root + -s SUBVOL, --snapshot SUBVOL Take a snapshot of subvolume named SUBVOL. -l, --list List snapshots -r NUMBER, --remove NUMBER Remove snapshot NUMBER. See snapshot numbers with snapsh -l @@ -66,11 +65,6 @@ snapshot() { EXIT_CODE=1 fi else - # TYPE defaults to manual - if [[ -z "${SET_TYPE}" ]]; then - SET_TYPE="manual" - fi - printf "Creating snapshot of subvolume ${SUBVOLUME} as ${SUBVOLUME}_snapshot_${TIMESTAMP}\n" # Create info file for listing snapshots @@ -78,7 +72,7 @@ snapshot() { printf "DATE=\"$(date)\" SOURCE_SUBVOLUME=\"${SUBVOLUME}\" DESCRIPTION=\"${DESCRIPTION}\" - TYPE=\"${SET_TYPE}\"\n" > ${TOPLEVEL}/${SUBVOLUME}/.snapsh + TYPE=\"manual\"\n" > ${TOPLEVEL}/${SUBVOLUME}/.snapsh # Create readonly subvolume ${BTRFS_EXECUTABLE} subvolume snapshot -r ${TOPLEVEL}/${SUBVOLUME} ${SNAPSHOTS_LOCATION}/${SUBVOLUME}_snapshot_${TIMESTAMP} @@ -91,7 +85,7 @@ snapshot() { DATE=$(date) SOURCE_SUBVOLUME=${SUBVOLUME} DESCRIPTION=${DESCRIPTION} - TYPE=\"${SET_TYPE}\"\n" + TYPE=\"manual\"\n" fi @@ -105,14 +99,8 @@ list() { NUM=1 printf "%6s %s %s %26s %s %s %6s %s %s\n" "Number" "|" "Time:" "|" "Source" "|" "Type" "|" "Description" for snapshot in ${SNAPSHOTS_LOCATION}/*/; do - if [[ -z "${SET_TYPE}" ]]; then - . ${snapshot}/.snapsh - printf "%8s %32s %8s %8s %s\n" "${NUM} |" "${DATE} |" "${SOURCE_SUBVOLUME} |" "${TYPE} |" "${DESCRIPTION}" - elif [[ -n "${SET_TYPE}" ]]; then - . ${snapshot}/.snapsh - [[ "${SET_TYPE}" == "${TYPE}" ]] && printf "%8s %32s %8s %8s %s\n" "${NUM} |" "${DATE} |" "${SOURCE_SUBVOLUME} |" "${TYPE} |" "${DESCRIPTION}" - fi - + . ${snapshot}/.snapsh + printf "%8s %32s %8s %8s %s\n" "${NUM} |" "${DATE} |" "${SOURCE_SUBVOLUME} |" "${TYPE} |" "${DESCRIPTION}" let NUM=NUM+1 done exit 0 @@ -136,7 +124,7 @@ remove() { TARGET=${SNAPSHOTS[${INDEX}]} . ${TARGET}/.snapsh - printf "Delete snapshot ${REMOVE_TARGET}: ${DATE}, source subvolume ${SOURCE_SUBVOLUME}, ${TYPE}, ${DESCRIPTION} (y/n)? " + printf "Delete snapshot ${REMOVE_TARGET}: ${DATE}, subvolume ${SOURCE_SUBVOLUME}, ${DESCRIPTION} (y/n)? " read -n 1 if [[ "${REPLY}" == "y" ]]; then printf "\n" @@ -227,11 +215,11 @@ fi # Options parsing: -OPTIONS=$(getopt -a -n snapsh -o hs:d:lr:t: --long help,snapshot:,description:,list,remove:,rollback:,type: -- "$@") +OPTIONS=$(getopt -a -n snapsh -o hs:d:lr: --long help,snapshot:,description:,list,remove:,rollback: -- "$@") # Invalid options (getopt returns nonzero) if [[ "$?" -ne 0 ]]; then - printf "Invalid options.\n" + printf "Error Parsing options\n" help exit 1 fi @@ -253,12 +241,12 @@ while true; do -s | --snapshot) SUBVOLUME="$2" - SNAPSHOT=true + snapshot shift 2 ;; -l | --list) - LIST=true + list shift ;; @@ -273,34 +261,9 @@ while true; do rollback shift 2 ;; - - -t | --type) - case "$2" in - manual) - SET_TYPE="manual";; - auto) - SET_TYPE="auto";; - boot) - SET_TYPE="boot";; - backup) - SET_TYPE="backup";; - *) - printf "\nIncorrect type value.\n" - exit 1;; - esac - shift 2 - ;; - --) - shift - break - ;; + esac done -if [[ -n "${SNAPSHOT}" ]]; then - snapshot -elif [[ -n "${LIST}" ]]; then - list -fi \ No newline at end of file From 56a7243c268690060a827b9d016b037ccee8b47d Mon Sep 17 00:00:00 2001 From: Jarno Rankinen Date: Wed, 5 Aug 2020 09:20:32 +0300 Subject: [PATCH 3/3] Revert "Revert "Updated helptext"" Messed up with reverting Added -l, --list option --- snapsh | 67 +++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 52 insertions(+), 15 deletions(-) diff --git a/snapsh b/snapsh index b2705f1..c389931 100755 --- a/snapsh +++ b/snapsh @@ -29,15 +29,16 @@ DESCRIPTION="" help() { - printf "Usage: - snapsh [OPTIONS] + printf "Usage:\n +snapsh [OPTIONS] Options: -h, --help Display this help message - -d STR, --description STR Add a description for the snapshot displayed in the - snapshots listing. Must be used before -s, e.g. - snapsh -d \"A snapshot\" -s root -s SUBVOL, --snapshot SUBVOL Take a snapshot of subvolume named SUBVOL. + -d STR, --description STR Add a description for the snapshot displayed in the + snapshots listing. + -t TYPE, --type TYPE Set the type of snapshot, where TYPE=manual|auto|boot|backup + Can be used with -l, --list to filter results -l, --list List snapshots -r NUMBER, --remove NUMBER Remove snapshot NUMBER. See snapshot numbers with snapsh -l @@ -65,6 +66,11 @@ snapshot() { EXIT_CODE=1 fi else + # TYPE defaults to manual + if [[ -z "${SET_TYPE}" ]]; then + SET_TYPE="manual" + fi + printf "Creating snapshot of subvolume ${SUBVOLUME} as ${SUBVOLUME}_snapshot_${TIMESTAMP}\n" # Create info file for listing snapshots @@ -72,7 +78,7 @@ snapshot() { printf "DATE=\"$(date)\" SOURCE_SUBVOLUME=\"${SUBVOLUME}\" DESCRIPTION=\"${DESCRIPTION}\" - TYPE=\"manual\"\n" > ${TOPLEVEL}/${SUBVOLUME}/.snapsh + TYPE=\"${SET_TYPE}\"\n" > ${TOPLEVEL}/${SUBVOLUME}/.snapsh # Create readonly subvolume ${BTRFS_EXECUTABLE} subvolume snapshot -r ${TOPLEVEL}/${SUBVOLUME} ${SNAPSHOTS_LOCATION}/${SUBVOLUME}_snapshot_${TIMESTAMP} @@ -85,7 +91,7 @@ snapshot() { DATE=$(date) SOURCE_SUBVOLUME=${SUBVOLUME} DESCRIPTION=${DESCRIPTION} - TYPE=\"manual\"\n" + TYPE=\"${SET_TYPE}\"\n" fi @@ -99,8 +105,14 @@ list() { NUM=1 printf "%6s %s %s %26s %s %s %6s %s %s\n" "Number" "|" "Time:" "|" "Source" "|" "Type" "|" "Description" for snapshot in ${SNAPSHOTS_LOCATION}/*/; do - . ${snapshot}/.snapsh - printf "%8s %32s %8s %8s %s\n" "${NUM} |" "${DATE} |" "${SOURCE_SUBVOLUME} |" "${TYPE} |" "${DESCRIPTION}" + if [[ -z "${SET_TYPE}" ]]; then + . ${snapshot}/.snapsh + printf "%8s %32s %8s %8s %s\n" "${NUM} |" "${DATE} |" "${SOURCE_SUBVOLUME} |" "${TYPE} |" "${DESCRIPTION}" + elif [[ -n "${SET_TYPE}" ]]; then + . ${snapshot}/.snapsh + [[ "${SET_TYPE}" == "${TYPE}" ]] && printf "%8s %32s %8s %8s %s\n" "${NUM} |" "${DATE} |" "${SOURCE_SUBVOLUME} |" "${TYPE} |" "${DESCRIPTION}" + fi + let NUM=NUM+1 done exit 0 @@ -124,7 +136,7 @@ remove() { TARGET=${SNAPSHOTS[${INDEX}]} . ${TARGET}/.snapsh - printf "Delete snapshot ${REMOVE_TARGET}: ${DATE}, subvolume ${SOURCE_SUBVOLUME}, ${DESCRIPTION} (y/n)? " + printf "Delete snapshot ${REMOVE_TARGET}: ${DATE}, source subvolume ${SOURCE_SUBVOLUME}, ${TYPE}, ${DESCRIPTION} (y/n)? " read -n 1 if [[ "${REPLY}" == "y" ]]; then printf "\n" @@ -215,11 +227,11 @@ fi # Options parsing: -OPTIONS=$(getopt -a -n snapsh -o hs:d:lr: --long help,snapshot:,description:,list,remove:,rollback: -- "$@") +OPTIONS=$(getopt -a -n snapsh -o hs:d:lr:t: --long help,snapshot:,description:,list,remove:,rollback:,type: -- "$@") # Invalid options (getopt returns nonzero) if [[ "$?" -ne 0 ]]; then - printf "Error Parsing options\n" + printf "Invalid options.\n" help exit 1 fi @@ -241,12 +253,12 @@ while true; do -s | --snapshot) SUBVOLUME="$2" - snapshot + SNAPSHOT=true shift 2 ;; -l | --list) - list + LIST=true shift ;; @@ -261,9 +273,34 @@ while true; do rollback shift 2 ;; + + -t | --type) + case "$2" in + manual) + SET_TYPE="manual";; + auto) + SET_TYPE="auto";; + boot) + SET_TYPE="boot";; + backup) + SET_TYPE="backup";; + *) + printf "\nIncorrect type value.\n" + exit 1;; + esac + shift 2 + ;; - + --) + shift + break + ;; esac done +if [[ -n "${SNAPSHOT}" ]]; then + snapshot +elif [[ -n "${LIST}" ]]; then + list +fi \ No newline at end of file