Mercurial > hgrepos > FreeBSD > ports > sysutils > local-bsdtools
changeset 76:fea2ef3ff89a
Populate an existing directory tree with the contents of base.txz
| author | Franz Glasner <hg@dom66.de> |
|---|---|
| date | Thu, 15 Aug 2019 17:01:02 +0200 |
| parents | 2e3ac70bdfc8 |
| children | 5aab3a28895f |
| files | bin/fjail |
| diffstat | 1 files changed, 42 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/bin/fjail Thu Aug 15 16:07:53 2019 +0200 +++ b/bin/fjail Thu Aug 15 17:01:02 2019 +0200 @@ -2,7 +2,7 @@ # -*- indent-tabs-mode: nil; -*- # @(#)$HGid$ -set -eu +set -e VERSION="@@VERSION@@" @@ -26,6 +26,10 @@ privs MOUNTPOINT Adjust some Unix privileges to mounted jail datasets + + populate MOUNTPOINT BASETXZ + + Populate the jail directory in MOUNTPOINT with the base system in BASETXZ " @@ -117,6 +121,39 @@ # +# "populate" -- populate the datasets with content from a FreeBSD base.txz +# +# command_populate mountpoint basetxz +# +command_populate() { + # MOUNTPOINT -- base.txz + local _mp _basetxz + + _mp="$1" + _basetxz="$2" + + if [ -z "${_mp}" ]; then + echo "ERROR: no mountpoint given" >&2 + return 2 + fi + if [ -z "${_basetxz}" ]; then + echo "ERROR: no base.txz given" >&2 + return 2 + fi + if [ ! -d "${_mp}" ]; then + echo "ERROR: mountpoint \`${_mp}' does not exist" >&2 + return 1 + fi + if [ ! -r "${_basetxz}" ]; then + echo "ERROR: file \`${_basetxz}' is not readable" >&2 + return 1 + fi + + tar -C "${_mp}" --exclude=./var/empty -xJp -f "${_basetxz}" || { echo "ERROR: tar encountered errors" >&2; return 1; } +} + + +# # "privs" -- adjust privileges # # To be used when all ZFS datasets are mounted. @@ -174,8 +211,11 @@ privs) command_privs "$@" ;; + populate) + command_populate "$@" + ;; *) - echo "ERROR" >&2 + echo "ERROR: unknown command \`${command}'" >&2 exit 2 ;; esac
