Implement -H option which does listing without headers and lines are separated by tabs. Fix small UMOUNT and ACTIVATE bugs.
This commit is contained in:
parent
aefe8c9cf7
commit
cb5a900e65
23
beadm
23
beadm
|
|
@ -42,10 +42,11 @@ __usage() {
|
||||||
echo " ${NAME} create beName@snapshot"
|
echo " ${NAME} create beName@snapshot"
|
||||||
echo " ${NAME} destroy [-F] beName"
|
echo " ${NAME} destroy [-F] beName"
|
||||||
echo " ${NAME} destroy [-F] beName@snapshot"
|
echo " ${NAME} destroy [-F] beName@snapshot"
|
||||||
echo " ${NAME} list [-a] [-s] [-D]"
|
echo " ${NAME} list [-a] [-s] [-D] [-H]"
|
||||||
echo " ${NAME} mount beName [mountpoint]"
|
echo " ${NAME} mount beName [mountpoint]"
|
||||||
echo " ${NAME} umount [-f] beName"
|
echo " ${NAME} umount [-f] beName"
|
||||||
echo " ${NAME} unmount [-f] beName"
|
echo " ${NAME} unmount [-f] beName"
|
||||||
|
|
||||||
echo " ${NAME} rename origBeName newBeName"
|
echo " ${NAME} rename origBeName newBeName"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
@ -175,11 +176,12 @@ case ${1} in
|
||||||
OPTION_D=0
|
OPTION_D=0
|
||||||
OPTION_s=0
|
OPTION_s=0
|
||||||
shift
|
shift
|
||||||
while getopts "aDs" OPT
|
while getopts "aDHs" OPT
|
||||||
do
|
do
|
||||||
case ${OPT} in
|
case ${OPT} in
|
||||||
(a) OPTION_a=1 ;;
|
(a) OPTION_a=1 ;;
|
||||||
(D) OPTION_D=1 ;;
|
(D) OPTION_D=1 ;;
|
||||||
|
(H) OPTION_H=1 ;;
|
||||||
(s) OPTION_s=1
|
(s) OPTION_s=1
|
||||||
OPTION_a=1 ;;
|
OPTION_a=1 ;;
|
||||||
(*) __usage ;;
|
(*) __usage ;;
|
||||||
|
|
@ -190,6 +192,7 @@ case ${1} in
|
||||||
-v BOOTFS="${BOOTFS}" \
|
-v BOOTFS="${BOOTFS}" \
|
||||||
-v OPTION_a="${OPTION_a}" \
|
-v OPTION_a="${OPTION_a}" \
|
||||||
-v OPTION_D="${OPTION_D}" \
|
-v OPTION_D="${OPTION_D}" \
|
||||||
|
-v OPTION_H="${OPTION_H}" \
|
||||||
-v OPTION_s="${OPTION_s}" \
|
-v OPTION_s="${OPTION_s}" \
|
||||||
'function __normalize(VALUE) {
|
'function __normalize(VALUE) {
|
||||||
if(VALUE == "-" || VALUE == 0)
|
if(VALUE == "-" || VALUE == 0)
|
||||||
|
|
@ -198,7 +201,7 @@ case ${1} in
|
||||||
return substr(VALUE, 1, length(VALUE) - 1) * MULTIPLIER[substr(VALUE, length(VALUE))]
|
return substr(VALUE, 1, length(VALUE) - 1) * MULTIPLIER[substr(VALUE, length(VALUE))]
|
||||||
}
|
}
|
||||||
function __show_units(VALUE) {
|
function __show_units(VALUE) {
|
||||||
if(VALUE < 1025) { UNIT = "K"; }
|
if(VALUE < 1024) { UNIT = "K"; }
|
||||||
else if(VALUE < 1048576) { VALUE /= 1024; UNIT = "M"; }
|
else if(VALUE < 1048576) { VALUE /= 1024; UNIT = "M"; }
|
||||||
else if(VALUE < 1073741824) { VALUE /= 1048576; UNIT = "G"; }
|
else if(VALUE < 1073741824) { VALUE /= 1048576; UNIT = "G"; }
|
||||||
else if(VALUE < 1099511627776) { VALUE /= 1073741824; UNIT = "T"; }
|
else if(VALUE < 1099511627776) { VALUE /= 1073741824; UNIT = "T"; }
|
||||||
|
|
@ -283,6 +286,8 @@ case ${1} in
|
||||||
BE_HEAD = "BE/Dataset/Snapshot"
|
BE_HEAD = "BE/Dataset/Snapshot"
|
||||||
printf "%-" FSNAME_LENGTH + 2 "s %-6s %-" MOUNTPOINT_LENGTH "s %6s %s\n", BE_HEAD, "Active", "Mountpoint", "Space", "Created"
|
printf "%-" FSNAME_LENGTH + 2 "s %-6s %-" MOUNTPOINT_LENGTH "s %6s %s\n", BE_HEAD, "Active", "Mountpoint", "Space", "Created"
|
||||||
}
|
}
|
||||||
|
else if(OPTION_H == 1)
|
||||||
|
BE_HEAD = ""
|
||||||
else {
|
else {
|
||||||
BE_HEAD = "BE"
|
BE_HEAD = "BE"
|
||||||
printf "%-" FSNAME_LENGTH "s %-6s %-" MOUNTPOINT_LENGTH "s %6s %s\n", BE_HEAD, "Active", "Mountpoint", "Space", "Created"
|
printf "%-" FSNAME_LENGTH "s %-6s %-" MOUNTPOINT_LENGTH "s %6s %s\n", BE_HEAD, "Active", "Mountpoint", "Space", "Created"
|
||||||
|
|
@ -351,6 +356,9 @@ case ${1} in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(OPTION_H == 1)
|
||||||
|
printf "%s\t%s\t%s\t%s\t%s\n", BENAME, ACTIVE, MOUNTPOINT, __show_units(SPACE), CREATION
|
||||||
|
else
|
||||||
printf "%-" FSNAME_LENGTH "s %-6s %-" MOUNTPOINT_LENGTH "s %6s %s\n", BENAME, ACTIVE, MOUNTPOINT, __show_units(SPACE), CREATION
|
printf "%-" FSNAME_LENGTH "s %-6s %-" MOUNTPOINT_LENGTH "s %6s %s\n", BENAME, ACTIVE, MOUNTPOINT, __show_units(SPACE), CREATION
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -470,14 +478,15 @@ EOF
|
||||||
ZFS_LIST=$( zfs list -H -o name -r ${POOL}/ROOT )
|
ZFS_LIST=$( zfs list -H -o name -r ${POOL}/ROOT )
|
||||||
# disable automatic mount on all inactive boot environments
|
# disable automatic mount on all inactive boot environments
|
||||||
echo "${ZFS_LIST}" \
|
echo "${ZFS_LIST}" \
|
||||||
| grep -v "^${POOL}/ROOT/${2}" \
|
| grep -v "^${POOL}/ROOT/${2}$" \
|
||||||
|
| grep -v "^${POOL}/ROOT/${2}/" \
|
||||||
| while read NAME
|
| while read NAME
|
||||||
do
|
do
|
||||||
zfs set canmount=noauto ${NAME}
|
zfs set canmount=noauto ${NAME}
|
||||||
done
|
done
|
||||||
# enable automatic mount for active boot environment and promote it
|
# enable automatic mount for active boot environment and promote it
|
||||||
echo "${ZFS_LIST}" \
|
echo "${ZFS_LIST}" \
|
||||||
| grep "^${POOL}/ROOT/${2}" \
|
| grep -E "^${POOL}/ROOT/${2}(/|$)" \
|
||||||
| while read NAME
|
| while read NAME
|
||||||
do
|
do
|
||||||
zfs set canmount=on ${NAME}
|
zfs set canmount=on ${NAME}
|
||||||
|
|
@ -634,7 +643,7 @@ EOF
|
||||||
echo "Renamed successfully"
|
echo "Renamed successfully"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
(mount) # -------------------------------------------------------------------
|
(mount|chroot) # ------------------------------------------------------------
|
||||||
if [ ${#} -eq 2 ]
|
if [ ${#} -eq 2 ]
|
||||||
then
|
then
|
||||||
TARGET=$( mktemp -d /tmp/tmp.XXXXXX )
|
TARGET=$( mktemp -d /tmp/tmp.XXXXXX )
|
||||||
|
|
@ -714,8 +723,8 @@ EOF
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
mount \
|
mount \
|
||||||
| grep "^${POOL}/ROOT/${2}" \
|
|
||||||
| awk '{print $1}' \
|
| awk '{print $1}' \
|
||||||
|
| grep "^${POOL}/ROOT/${2}(/|$)" \
|
||||||
| sort -n -r \
|
| sort -n -r \
|
||||||
| while read FS
|
| while read FS
|
||||||
do
|
do
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue