diff options
author | Andrew Cady <d@jerkface.net> | 2017-03-28 15:46:55 -0400 |
---|---|---|
committer | Andrew Cady <d@jerkface.net> | 2017-03-28 15:48:00 -0400 |
commit | 46f69c74a01659ccd78dcb32ea5933edaa0c9241 (patch) | |
tree | 3fac5f11767a5accdc4147841e4433f515c42a9e /src/store-child-permanently | |
parent | 3929c490ecb35d285fd324c632b3dc83d1d1c10c (diff) |
Support for reusing a generated set of child keys
Diffstat (limited to 'src/store-child-permanently')
-rwxr-xr-x | src/store-child-permanently | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/store-child-permanently b/src/store-child-permanently new file mode 100755 index 0000000..463f776 --- /dev/null +++ b/src/store-child-permanently | |||
@@ -0,0 +1,44 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | . samizdat-paths.sh | ||
4 | |||
5 | error() | ||
6 | { | ||
7 | printf 'Error: %s\n' "${*:-command failed}" >&2 | ||
8 | exit 1 | ||
9 | } | ||
10 | |||
11 | warning() | ||
12 | { | ||
13 | printf 'Warning: %s\n' "${*:-something went wrong}" >&2 | ||
14 | } | ||
15 | |||
16 | store_tmpfs() | ||
17 | { | ||
18 | local dir="$1" | ||
19 | mountpoint -q "$dir" || return 0 | ||
20 | [ ! -d "$dir".backup ] || error "existing child backup found: '$dir.backup'. Refusing to continue." | ||
21 | cp -a "$dir" "$dir".backup || error "failed to make copy of child." | ||
22 | umount "$dir" || error "failed to unmount child tmpfs" | ||
23 | rmdir "$dir" || mv -Tb "$dir" "$dir".unlikely | ||
24 | mv -T "$dir".backup "$dir" || error "failed to move copied child dir into place. Child will not function!" | ||
25 | } | ||
26 | |||
27 | assert_root() | ||
28 | { | ||
29 | [ "$(id -u)" = 0 ] || error "you are not root" | ||
30 | } | ||
31 | |||
32 | main() | ||
33 | { | ||
34 | assert_root | ||
35 | child=$1 | ||
36 | [ "$child" ] || usage | ||
37 | if [ -d "$samizdat_child_dir"/child."$child" ]; then | ||
38 | store_tmpfs "$samizdat_child_dir"/child."$child" | ||
39 | else | ||
40 | error "not a valid child: $child" | ||
41 | fi | ||
42 | } | ||
43 | |||
44 | main "$@" | ||