lxc-snapshot
1.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/bin/sh
function lxc-snapshot()
{
local BTRFS=/sbin/btrfs
local CHMOD=/bin/chmod
local CHOWN=/bin/chown
local CUT=/usr/bin/cut
local ECHO=/bin/echo
local GREP=/bin/grep
local ID=/usr/bin/id
local LXC_USERNSEXEC=/usr/bin/lxc-usernsexec
local MKDIR=/bin/mkdir
local SED=/bin/sed
local TEST=/usr/bin/test
local SOURCE=$1
local TARGET=$2
local IP=$3
local SUBUIDS=$(${GREP} ${USER} /etc/subuid)
local SUBGIDS=$(${GREP} ${USER} /etc/subgid)
local SUID_START=$(${ECHO} "${SUBUIDS}" | ${CUT} -d: -f2)
local SGID_START=$(${ECHO} "${SUBGIDS}" | ${CUT} -d: -f2)
local HUID=$(${ID} -u)
local HGID=$(${ID} -g)
${MKDIR} "${HOME}/.local/share/lxc/${TARGET}"
${CHMOD} 770 "${HOME}/.local/share/lxc/${TARGET}"
${SED} 's/'${SOURCE}'/'${TARGET}'/;/lxc.network.ipv4 *=/s/= *.*/= '${IP//\//\\/}'/' \
"${HOME}/.local/share/lxc/${SOURCE}/config" >"${HOME}/.local/share/lxc/${TARGET}/config"
${LXC_USERNSEXEC} -m 'u:0:'${SUID_START}':1' -m 'g:0:'${SGID_START}':1' \
-m 'u:'${HUID}':'${HUID}':1' -m 'g:'${HGID}':'${HGID}':1' -- \
${CHOWN} 0 "${HOME}/.local/share/lxc/${TARGET}"
${LXC_USERNSEXEC} -m 'u:0:'${SUBUIDS#*:} -m 'g:0:'${SUBGIDS#*:} -- \
${BTRFS} subvolume snapshot \
"${HOME}/.local/share/lxc/${SOURCE}/rootfs" \
"${HOME}/.local/share/lxc/${TARGET}/rootfs"
}
export -f lxc-snapshot
# vim: set ft=sh ts=4 sw=4: