Skip to content

Instantly share code, notes, and snippets.

@DavidVentura
Last active May 10, 2018 21:50
Show Gist options
  • Save DavidVentura/6c71db5b56793c38a68a to your computer and use it in GitHub Desktop.
Save DavidVentura/6c71db5b56793c38a68a to your computer and use it in GitHub Desktop.
Migrate LXC to Proxmox 4
#!/bin/bash
set -e
if [ "$UID" -ne 0 ]; then
echo "Run as root"
exit 1
fi
#CONFIGURE THIS OR IT WON'T WORK
IMAGES_ROOT="/esp/images"
CONTAINER_NAME="web"
CONTAINER_ID=106 # free, new ID
WORKING_CONTAINER_ID=104
DISK_SIZE="8G"
LOOP_DEVICE=$(losetup -f)
TMP_DIR=$(mktemp -d)
clean() {
losetup -d $LOOP_DEVICE || exit 1
rm -rf $TMP_DIR
}
trap clean 0
trap clean ERR
lxc-stop -n $CONTAINER_NAME || ( echo "$CONTAINER_NAME Is not running? Continuing in 2s" && sleep 2 )
cd $IMAGES_ROOT
mkdir -p $CONTAINER_ID
cd $CONTAINER_ID
qemu-img create -f raw vm-$CONTAINER_ID-disk-1.raw $DISK_SIZE
echo "Image created"
losetup $LOOP_DEVICE vm-$CONTAINER_ID-disk-1.raw
fdisk $LOOP_DEVICE || echo "Updating partitions"
partprobe $LOOP_DEVICE >/dev/null 2>&1
mkfs.ext4 -F $LOOP_DEVICE >/dev/null 2>&1
mount $LOOP_DEVICE $TMP_DIR
echo "Mounted, copying (will take time)"
#MODIFY THIS LINE WITH YOUR CONTAINER ROOT
( cd /storage/lxc/$CONTAINER_NAME/rootfs/ && tar cf - . ) | ( cd $TMP_DIR && tar xpf - )
echo "Finishied copying"
losetup -d $LOOP_DEVICE && echo "Loopback device unmounted" || echo "Error unmounting $LOOP_DEVICE"
umount $TMP_DIR
echo "Disk unmounted"
rmdir $TMP_DIR
cp /etc/pve/nodes/homeserver/lxc/{$WORKING_CONTAINER_ID,$CONTAINER_ID}.conf
vi -O /etc/pve/nodes/homeserver/lxc/{$WORKING_CONTAINER_ID,$CONTAINER_ID}.conf
sleep 2
echo "Finished"
clean
echo "Start from the proxmox web"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment