diff options
-rwxr-xr-x | ezjail-admin | 57 | ||||
-rw-r--r-- | man8/ezjail-admin.8 | 14 |
2 files changed, 70 insertions, 1 deletions
diff --git a/ezjail-admin b/ezjail-admin index a6514c1..beffaed 100755 --- a/ezjail-admin +++ b/ezjail-admin | |||
@@ -41,7 +41,7 @@ ezjail_basesystem="base" | |||
41 | case `uname -p` in amd64) ezjail_dirlist="${ezjail_dirlist} usr/lib32"; ezjail_basesystem="${ezjail_basesystem} lib32";; esac | 41 | case `uname -p` in amd64) ezjail_dirlist="${ezjail_dirlist} usr/lib32"; ezjail_basesystem="${ezjail_basesystem} lib32";; esac |
42 | 42 | ||
43 | # Synopsis messages | 43 | # Synopsis messages |
44 | ezjail_usage_ezjailadmin="${ezjail_admin} v3.4.2\nUsage: ${ezjail_admin} [archive|config|console|create|delete|freeze|install|list|restore|snapshot|troubleshoot|update] {params}" | 44 | ezjail_usage_ezjailadmin="${ezjail_admin} v3.4.2\nUsage: ${ezjail_admin} [archive|config|console|create|delete|freeze|install|list|restore|snapshot|troubleshoot|update|baseclean] {params}" |
45 | ezjail_usage_install="Usage: ${ezjail_admin} install [-mMpPsSK] [-h host] [-r release]" | 45 | ezjail_usage_install="Usage: ${ezjail_admin} install [-mMpPsSK] [-h host] [-r release]" |
46 | ezjail_usage_create="Usage: ${ezjail_admin} create [-xbi] [-f flavour] [-r jailroot] [-s size] [-c bde|eli|zfs] [-C args] [-a archive] [-z parentzfs] jailname jailip" | 46 | ezjail_usage_create="Usage: ${ezjail_admin} create [-xbi] [-f flavour] [-r jailroot] [-s size] [-c bde|eli|zfs] [-C args] [-a archive] [-z parentzfs] jailname jailip" |
47 | ezjail_usage_delete="Usage: ${ezjail_admin} delete [-wf] jailname" | 47 | ezjail_usage_delete="Usage: ${ezjail_admin} delete [-wf] jailname" |
@@ -53,6 +53,7 @@ ezjail_usage_restore="Usage: ${ezjail_admin} restore [-f] [-d archivedir] (archi | |||
53 | ezjail_usage_freeze="Usage: ${ezjail_admin} freeze jailname newflavour" | 53 | ezjail_usage_freeze="Usage: ${ezjail_admin} freeze jailname newflavour" |
54 | ezjail_usage_troubleshoot="Usage: ${ezjail_admin} troubleshoot [jailname...]" | 54 | ezjail_usage_troubleshoot="Usage: ${ezjail_admin} troubleshoot [jailname...]" |
55 | ezjail_usage_list="Usage: ${ezjail_admin} list" | 55 | ezjail_usage_list="Usage: ${ezjail_admin} list" |
56 | ezjail_usage_baseclean="Usage: ${ezjail_admin} baseclean [-y]" | ||
56 | 57 | ||
57 | ################################ | 58 | ################################ |
58 | # End of variable initialization | 59 | # End of variable initialization |
@@ -1218,6 +1219,60 @@ install) | |||
1218 | [ "${ezjail_installports}" ] && ezjail_updateports | 1219 | [ "${ezjail_installports}" ] && ezjail_updateports |
1219 | 1220 | ||
1220 | ;; | 1221 | ;; |
1222 | ######################## ezjail-admin BASECLEAN ######################## | ||
1223 | baseclean) | ||
1224 | unset ezjail_yeswecan | ||
1225 | |||
1226 | shift; while getopts y arg; do case ${arg} in | ||
1227 | y) ezjail_yeswecan="YES";; | ||
1228 | ?) exerr ${ezjail_usage_baseclean};; | ||
1229 | esac; done; shift $(( $OPTIND - 1 )) | ||
1230 | |||
1231 | [ "${ezjail_yeswecan}" != "YES" ] && echo "baseclean dry run, nothing will be deleted. Use -y option to delete files." | ||
1232 | |||
1233 | [ "${ezjail_use_zfs}" = "YES" ] && ensure_jailzfs | ||
1234 | ezjail_makeabsolute ezjail_jailtemp | ||
1235 | rm -rf "${ezjail_jailtemp}" | ||
1236 | |||
1237 | # Create and try to access temp dir | ||
1238 | mkdir -p "${ezjail_jailtemp}" || exerr "Error: Could not create temporary base jail directory ${ezjail_jailtemp}." | ||
1239 | |||
1240 | # create any directories in install log | ||
1241 | for line in `cat ${ezjail_jailbase}/.ezjail.installlog | sort`; do | ||
1242 | [ ! -d "${ezjail_jailtemp}/${line%/*}" ] && mkdir -p "${ezjail_jailtemp}/${line%/*}" | ||
1243 | done | ||
1244 | |||
1245 | # we ignore any usr/ports and the ezjail install log itself | ||
1246 | mkdir -p "${ezjail_jailtemp}/usr/ports" | ||
1247 | touch "${ezjail_jailtemp}/.ezjail.installlog" | ||
1248 | |||
1249 | # touch any files listed in install log | ||
1250 | for line in `cat ${ezjail_jailbase}/.ezjail.installlog | sort`; do | ||
1251 | [ ! -e "${ezjail_jailtemp}/${line}" ] && touch "${ezjail_jailtemp}/${line}" | ||
1252 | done | ||
1253 | |||
1254 | # User has enabled uglyperlhack in ezjail.conf, make sure symlink doesn't get deleted | ||
1255 | [ "${ezjail_uglyperlhack}" = "YES" ] && touch "${ezjail_jailtemp}/usr/bin/perl" | ||
1256 | |||
1257 | # find all files in base jail that are not listed in the install log and delete them | ||
1258 | for _file in `find ${ezjail_jailbase} -type l -or -type f ! -regex ".*usr/ports.*" | sed s:^${ezjail_jailbase}/:: `; do | ||
1259 | if [ ! -f "${ezjail_jailtemp}/${_file}" ]; then | ||
1260 | [ "${ezjail_yeswecan}" != "YES" ] && echo "File: ${ezjail_jailbase}/${_file} will be deleted" | ||
1261 | [ "${ezjail_yeswecan}" = "YES" ] && rm "${ezjail_jailbase}/${_file}" && echo "File: ${ezjail_jailbase}/${_file} deleted" | ||
1262 | fi | ||
1263 | done | ||
1264 | |||
1265 | # find all directories in base jail that are not listed in the install log and delete them when empty | ||
1266 | for _dir in `find ${ezjail_jailbase} -type d ! -regex ".*usr/ports.*" | sort -r | sed -E s:^${ezjail_jailbase}:: `; do | ||
1267 | if [ ! -e "${ezjail_jailtemp}/${_dir}" ]; then | ||
1268 | [ "${ezjail_yeswecan}" != "YES" ] && echo "Dir: ${ezjail_jailbase}/${_dir} will be deleted" | ||
1269 | [ "${ezjail_yeswecan}" = "YES" ] && rmdir ${ezjail_jailbase}/${_dir} && echo "Dir: ${ezjail_jailbase}/${_dir} deleted" | ||
1270 | fi | ||
1271 | done | ||
1272 | |||
1273 | # remove our temporary directory | ||
1274 | rm -rf "${ezjail_jailtemp}" | ||
1275 | ;; | ||
1221 | ######################## ezjail-admin SHORTCUT ######################## | 1276 | ######################## ezjail-admin SHORTCUT ######################## |
1222 | *start|*stop|*startcrypto|*stopcrypto) | 1277 | *start|*stop|*startcrypto|*stopcrypto) |
1223 | start_stop_jail_by_script $@ | 1278 | start_stop_jail_by_script $@ |
diff --git a/man8/ezjail-admin.8 b/man8/ezjail-admin.8 index 65c44bf..71ec14b 100644 --- a/man8/ezjail-admin.8 +++ b/man8/ezjail-admin.8 | |||
@@ -61,6 +61,9 @@ | |||
61 | .Op Fl s Ar sourcetree | sourceosversion | 61 | .Op Fl s Ar sourcetree | sourceosversion |
62 | .Op Fl p | 62 | .Op Fl p |
63 | .Fl b | Fl i | Fl P | Fl u | Fl U | 63 | .Fl b | Fl i | Fl P | Fl u | Fl U |
64 | .Nm | ||
65 | .Cm baseclean | ||
66 | .Op Fl y | ||
64 | .Sh DESCRIPTION | 67 | .Sh DESCRIPTION |
65 | The | 68 | The |
66 | .Nm | 69 | .Nm |
@@ -629,6 +632,17 @@ sub command to install the basejail from binary packages. | |||
629 | .Pp | 632 | .Pp |
630 | If the basejail is managed in its own ZFS filesystem, a snapshot of that | 633 | If the basejail is managed in its own ZFS filesystem, a snapshot of that |
631 | filesystem is taken first. | 634 | filesystem is taken first. |
635 | .Ss Nm Cm baseclean | ||
636 | Cleans ezjail's basejail from any unneeded files that might still be present | ||
637 | after an upgrade via | ||
638 | .Cm ezjail-admin install | ||
639 | .Fl K | ||
640 | .Pp | ||
641 | Defaults in a dry run which | ||
642 | will not delete anything, but shows all files that would be deleted. | ||
643 | .Pp | ||
644 | .Fl y | ||
645 | Really delete that files. | ||
632 | .Sh FILES | 646 | .Sh FILES |
633 | .Pa EZJAIL_PREFIX/bin/ezjail-admin | 647 | .Pa EZJAIL_PREFIX/bin/ezjail-admin |
634 | .br | 648 | .br |