Migration Live System in LXC Container
Rsync ist fantastisch schnell und unvergleichlich!
Ein Setup von ISO oder sonstigem Image gibt Defaults vor, die sehr oft nicht erwünscht sind und sehr oft aus purer Gewohnheit angenommen werden, um sie nach Fertigstellung des Installations-Assistenten wieder auf jene Einstellungen zu bringen, die tatsächlich benötigt werden.
Dieses Skript ist sehr einfach gehalten und soll zeigen, dass es in 3 Schritten möglich ist, ein komplettes Linux System in einen LXC-Container zu verfrachten.
- Rsync ohne Mapping
- Mapping aus dem Klon in Variablen auslesen
- Rsync nochmal mit Mapping
#!/bin/bash
HOSTNAME=sockbook
TARGETPATH=/var/lib/libvirt/images/lxc/
rsync -avxPz \
--del \
--numeric-ids \
${HOSTNAME}:/etc ${TARGETPATH}${HOSTNAME}/
USERMAP=$(for f in $(cut ${HOSTNAME}/etc/passwd -d: -f 3); do echo -n $f:$(($f + 100000)),; done)
USERMAP=${USERMAP%,}
echo ${USERMAP}
GROUPMAP=$(for f in $(cut ${HOSTNAME}/etc/group -d: -f 3); do echo -n $f:$(($f + 100000)),; done)
GROUPMAP=${GROUPMAP%,}
rsync -avxPz \
--del \
--numeric-ids \
--exclude=var/log/journal/7b8ace6c4abc4fdfaeb7c437abe21a4c \
--usermap=${USERMAP} \
--groupmap=${GROUPMAP} \
${HOSTNAME}:/ ${TARGETPATH}${HOSTNAME}/