first_try
This commit is contained in:
parent
2f9456acbe
commit
ef7eb47409
1 changed files with 12 additions and 63 deletions
|
@ -1,10 +1,12 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
CONTS_LIST=$(lxc list | grep "RUNNING\|STOPPED" | awk {'print $2'})
|
|
||||||
|
CONTS_LIST=$(incus list | grep "RUNNING\|STOPPED" | awk {'print $2'})
|
||||||
|
|
||||||
if [ $# -eq 0 ]
|
if [ $# -eq 0 ]
|
||||||
then
|
then
|
||||||
echo "No arguments supplied, doing interactive mode"
|
echo "No arguments supplied, doing interactive mode"
|
||||||
sleep 1
|
sleep 1
|
||||||
|
|
||||||
let i=0
|
let i=0
|
||||||
W=()
|
W=()
|
||||||
while read -r line;
|
while read -r line;
|
||||||
|
@ -12,6 +14,7 @@ do
|
||||||
let i=$i+1
|
let i=$i+1
|
||||||
W+=($i "$line" off)
|
W+=($i "$line" off)
|
||||||
done < <( echo "$CONTS_LIST" )
|
done < <( echo "$CONTS_LIST" )
|
||||||
|
|
||||||
CONTS=$(dialog --checklist "Choose containers to copy" 24 80 17 "${W[@]}" 3>&2 2>&1 1>&3)
|
CONTS=$(dialog --checklist "Choose containers to copy" 24 80 17 "${W[@]}" 3>&2 2>&1 1>&3)
|
||||||
DEST_IP=$(dialog --inputbox "Enter destination IP:" 25 25 --output-fd 1)
|
DEST_IP=$(dialog --inputbox "Enter destination IP:" 25 25 --output-fd 1)
|
||||||
DEST_PORT=$(dialog --inputbox "Enter destination SSH port(leave blank for default 22):" 25 25 --output-fd 1)
|
DEST_PORT=$(dialog --inputbox "Enter destination SSH port(leave blank for default 22):" 25 25 --output-fd 1)
|
||||||
|
@ -36,8 +39,6 @@ SNAPS=$(zfs list -t snapshot)
|
||||||
DEST_SNAPS=$(ssh $DEST_IP -p $DEST_PORT zfs list -t snapshot); (($? != 0)) && { echo "SSH command to fill DEST_SNAPS exited with non-zero"; exit 1; }
|
DEST_SNAPS=$(ssh $DEST_IP -p $DEST_PORT zfs list -t snapshot); (($? != 0)) && { echo "SSH command to fill DEST_SNAPS exited with non-zero"; exit 1; }
|
||||||
|
|
||||||
|
|
||||||
bionic_checker=$(ssh $DEST_IP -p $DEST_PORT lsb_release -c | awk {'print $2'}); (($? != 0)) && { echo "SSH command to fill bionic_checker exited with non-zero"; exit 1; }
|
|
||||||
|
|
||||||
for CONT in $CONTS;
|
for CONT in $CONTS;
|
||||||
do
|
do
|
||||||
CONT_VAR=$(echo "$CONTS_LIST"| sed -n "`echo "$CONT p" | sed 's/ //'`")
|
CONT_VAR=$(echo "$CONTS_LIST"| sed -n "`echo "$CONT p" | sed 's/ //'`")
|
||||||
|
@ -50,7 +51,6 @@ DATASET_RECORDSIZE_VAR=$(zfs get recordsize -H -o value "$DATASET_VAR")
|
||||||
DATASET_ATIME_VAR=$(zfs get atime -H -o value "$DATASET_VAR")
|
DATASET_ATIME_VAR=$(zfs get atime -H -o value "$DATASET_VAR")
|
||||||
DATASET_RELATIME_VAR=$(zfs get relatime -H -o value "$DATASET_VAR")
|
DATASET_RELATIME_VAR=$(zfs get relatime -H -o value "$DATASET_VAR")
|
||||||
DATASET_QUOTA_VAR=$(zfs get quota -H -o value "$DATASET_VAR")
|
DATASET_QUOTA_VAR=$(zfs get quota -H -o value "$DATASET_VAR")
|
||||||
|
|
||||||
SNAP_TO_SEND_FIRST_FOR_LATER_CHECK=$(echo "$SNAP_TO_SEND_FIRST")
|
SNAP_TO_SEND_FIRST_FOR_LATER_CHECK=$(echo "$SNAP_TO_SEND_FIRST")
|
||||||
IFS="
|
IFS="
|
||||||
"
|
"
|
||||||
|
@ -79,7 +79,6 @@ echo "Sending first snapshot"
|
||||||
echo "Sending "$SNAP_TO_SEND_FIRST""
|
echo "Sending "$SNAP_TO_SEND_FIRST""
|
||||||
zfs send "$SNAP_TO_SEND_FIRST" | lzop | pv | ssh "$DEST_IP" -p $DEST_PORT "lzop -d | zfs recv -o recordsize="$DATASET_RECORDSIZE_VAR" -o atime="$DATASET_ATIME_VAR" -o relatime="$DATASET_RELATIME_VAR" -o quota="$DATASET_QUOTA_VAR" "$DEST_ZPOOL"/lxd/storage/containers/"$CONT_VAR""; (($? != 0)) && { echo "SSH command to send first snapshot exited with non-zero"; exit 1; }
|
zfs send "$SNAP_TO_SEND_FIRST" | lzop | pv | ssh "$DEST_IP" -p $DEST_PORT "lzop -d | zfs recv -o recordsize="$DATASET_RECORDSIZE_VAR" -o atime="$DATASET_ATIME_VAR" -o relatime="$DATASET_RELATIME_VAR" -o quota="$DATASET_QUOTA_VAR" "$DEST_ZPOOL"/lxd/storage/containers/"$CONT_VAR""; (($? != 0)) && { echo "SSH command to send first snapshot exited with non-zero"; exit 1; }
|
||||||
|
|
||||||
|
|
||||||
echo "Sleep 2"
|
echo "Sleep 2"
|
||||||
sleep 2
|
sleep 2
|
||||||
|
|
||||||
|
@ -132,7 +131,7 @@ echo "Sleep 2"
|
||||||
sleep 2
|
sleep 2
|
||||||
|
|
||||||
echo "Stopping "$CONT_VAR" on source"
|
echo "Stopping "$CONT_VAR" on source"
|
||||||
lxc stop "$CONT_VAR" --timeout 30; (($? != 0)) && echo "lxc stop timed-out after 30 seconds, doing with force parameter" && lxc stop "$CONT_VAR" --force
|
incus stop "$CONT_VAR" --timeout 30; (($? != 0)) && echo "incus stop timed-out after 30 seconds, doing with force parameter" && incus stop "$CONT_VAR" --force
|
||||||
|
|
||||||
echo "Sleep 2"
|
echo "Sleep 2"
|
||||||
sleep 2
|
sleep 2
|
||||||
|
@ -149,70 +148,20 @@ echo "Sending fifth snapshot"
|
||||||
echo "Sending "$SNAP_TO_SEND_FOURTH" to "$SNAP_TO_SEND_FIFTH""
|
echo "Sending "$SNAP_TO_SEND_FOURTH" to "$SNAP_TO_SEND_FIFTH""
|
||||||
zfs send -i "$SNAP_TO_SEND_FOURTH" "$SNAP_TO_SEND_FIFTH" | lzop | pv | ssh "$DEST_IP" -p $DEST_PORT "lzop -d | zfs recv -o recordsize="$DATASET_RECORDSIZE_VAR" -o atime="$DATASET_ATIME_VAR" -o relatime="$DATASET_RELATIME_VAR" -o quota="$DATASET_QUOTA_VAR" "$DEST_ZPOOL"/lxd/storage/containers/"$CONT_VAR" -F"; (($? != 0)) && { echo "SSH command to send fifth snapshot exited with non-zero"; exit 1; }
|
zfs send -i "$SNAP_TO_SEND_FOURTH" "$SNAP_TO_SEND_FIFTH" | lzop | pv | ssh "$DEST_IP" -p $DEST_PORT "lzop -d | zfs recv -o recordsize="$DATASET_RECORDSIZE_VAR" -o atime="$DATASET_ATIME_VAR" -o relatime="$DATASET_RELATIME_VAR" -o quota="$DATASET_QUOTA_VAR" "$DEST_ZPOOL"/lxd/storage/containers/"$CONT_VAR" -F"; (($? != 0)) && { echo "SSH command to send fifth snapshot exited with non-zero"; exit 1; }
|
||||||
|
|
||||||
if [ $bionic_checker == bionic ]
|
|
||||||
then
|
|
||||||
|
|
||||||
if [ -z "$SNAP_TO_SEND_FIRST_FOR_LATER_CHECK" ]
|
if [ -z "$SNAP_TO_SEND_FIRST_FOR_LATER_CHECK" ]
|
||||||
then
|
then
|
||||||
|
echo "Doing incus admin recover"
|
||||||
echo "Setting up mountpoint on destination for "$CONT_VAR""
|
#Maybe not necessary...
|
||||||
ssh "$DEST_IP" -p $DEST_PORT zfs set mountpoint=/var/lib/lxd/storage-pools/"$DEST_ZPOOL_2"/containers/"$CONT_VAR" "$DEST_ZPOOL"/lxd/storage/containers/"$CONT_VAR"; (($? != 0)) && { echo "SSH command to setup mountpoint on destination exited with non-zero"; exit 1; }
|
#ssh "$DEST_IP" -p $DEST_PORT zfs set mountpoint=legacy "$DEST_ZPOOL"/lxd/storage/containers/"$CONT_VAR"; (($? != 0)) && { echo "SSH command to setup mountpoint=legacy on destination exited with non-zero"; exit 1; }
|
||||||
|
ssh "$DEST_IP" -p $DEST_PORT "cat <<EOF | incus admin recover
|
||||||
echo "Fixing config for bionic"
|
|
||||||
ssh "$DEST_IP" -p $DEST_PORT sed -i '/volatile.idmap.current/d' /var/lib/lxd/storage-pools/"$DEST_ZPOOL_2"/containers/"$CONT_VAR"/backup.yaml; (($? != 0)) && { echo "SSH command to setup volatile.idmap exited with non-zero"; exit 1; }
|
|
||||||
ssh "$DEST_IP" -p $DEST_PORT sed -i '/volatile.uuid/d' /var/lib/lxd/storage-pools/"$DEST_ZPOOL_2"/containers/"$CONT_VAR"/backup.yaml; (($? != 0)) && { echo "SSH command to setup volatile.uuid exited with non-zero"; exit 1; }
|
|
||||||
ssh "$DEST_IP" -p $DEST_PORT sed -i '/volatile.cloud-init.instance-id/d' /var/lib/lxd/storage-pools/"$DEST_ZPOOL_2"/containers/"$CONT_VAR"/backup.yaml; (($? != 0)) && { echo "SSH command to setup volatile.cloud-init.instance-id exited with non-zero"; exit 1; }
|
|
||||||
ssh "$DEST_IP" -p $DEST_PORT sed -i '/volatile.last_state.ready/d' /var/lib/lxd/storage-pools/"$DEST_ZPOOL_2"/containers/"$CONT_VAR"/backup.yaml; (($? != 0)) && { echo "SSH command to setup volatile.last_state.ready exited with non-zero"; exit 1; }
|
|
||||||
|
|
||||||
echo "Importing "$CONT_VAR" on destination"
|
|
||||||
ssh "$DEST_IP" -p $DEST_PORT lxd import "$CONT_VAR" --force; (($? != 0)) && { echo "SSH command to import container exited with non-zero"; exit 1; }
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Starting "$CONT_VAR" on destination"
|
|
||||||
ssh "$DEST_IP" -p $DEST_PORT lxc start "$CONT_VAR"; (($? != 0)) && { echo "SSH command to start container exited with non-zero"; exit 1; }
|
|
||||||
|
|
||||||
echo " "
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
if [ -z "$SNAP_TO_SEND_FIRST_FOR_LATER_CHECK" ]
|
|
||||||
then
|
|
||||||
echo "Setting up mountpoint on destination for "$CONT_VAR""
|
|
||||||
target_snap_version=$(ssh "$DEST_IP" -p $DEST_PORT snap info lxd| grep tracking: | awk {'print $2'} | cut -d"/" -f-1 | cut -d"." -f-1); (($? != 0)) && { echo "SSH command to fill target_snap_version exited with non-zero"; exit 1; }
|
|
||||||
if [[ "$target_snap_version" == 4 ]]
|
|
||||||
then
|
|
||||||
ssh "$DEST_IP" -p $DEST_PORT zfs set canmount=noauto "$DEST_ZPOOL"/lxd/storage/containers/"$CONT_VAR"; (($? != 0)) && { echo "SSH command to setup mountpoint on destination exited with non-zero"; exit 1; }
|
|
||||||
ssh "$DEST_IP" -p $DEST_PORT zfs set mountpoint=/var/snap/lxd/common/lxd/storage-pools/"$DEST_ZPOOL_2"/containers/"$CONT_VAR" "$DEST_ZPOOL"/lxd/storage/containers/"$CONT_VAR"; (($? != 0)) && { echo "SSH command to setup mountpoint on destination exited with non-zero"; exit 1; }
|
|
||||||
ssh "$DEST_IP" -p $DEST_PORT zfs mount "$DEST_ZPOOL"/lxd/storage/containers/"$CONT_VAR"; (($? != 0)) && { echo "SSH command to setup mountpoint on destination exited with non-zero"; exit 1; }
|
|
||||||
REMOTE_LXD_PID=$(ssh "$DEST_IP" -p $DEST_PORT cat /var/snap/lxd/common/lxd.pid); (($? != 0)) && { echo "SSH command to get REMOTE_LXD_PID on destination exited with non-zero"; exit 1; }
|
|
||||||
ssh "$DEST_IP" -p $DEST_PORT "nsenter -t $REMOTE_LXD_PID -m bash -c \"mount -t zfs "$DEST_ZPOOL"/lxd/storage/containers/"$CONT_VAR" /var/snap/lxd/common/lxd/storage-pools/"$DEST_ZPOOL_2"/containers/"$CONT_VAR"\""; (($? != 0)) && { echo "SSH command to set REMOTE_LXD_PID on destination exited with non-zero"; exit 1; }
|
|
||||||
|
|
||||||
echo "Fixing config for lxd version 4"
|
|
||||||
ssh "$DEST_IP" -p $DEST_PORT sed -i '/volatile.cloud-init.instance-id/d' /var/snap/lxd/common/lxd/storage-pools/"$DEST_ZPOOL_2"/containers/"$CONT_VAR"/backup.yaml; (($? != 0)) && { echo "SSH command to setup volatile.cloud-init.instance-id exited with non-zero"; exit 1; }
|
|
||||||
ssh "$DEST_IP" -p $DEST_PORT sed -i '/volatile.last_state.ready/d' /var/snap/lxd/common/lxd/storage-pools/"$DEST_ZPOOL_2"/containers/"$CONT_VAR"/backup.yaml; (($? != 0)) && { echo "SSH command to setup volatile.last_state.ready exited with non-zero"; exit 1; }
|
|
||||||
|
|
||||||
echo "Importing "$CONT_VAR" on destination"
|
|
||||||
ssh "$DEST_IP" -p $DEST_PORT /snap/bin/lxd import "$CONT_VAR" --force; (($? != 0)) && { echo "SSH command to import container exited with non-zero"; exit 1; }
|
|
||||||
ssh "$DEST_IP" -p $DEST_PORT zfs umount "$DEST_ZPOOL"/lxd/storage/containers/"$CONT_VAR"; (($? != 0)) && { echo "SSH command to import container exited with non-zero"; exit 1; }
|
|
||||||
else
|
|
||||||
|
|
||||||
echo "Doing lxd recover"
|
|
||||||
ssh "$DEST_IP" -p $DEST_PORT zfs set mountpoint=legacy "$DEST_ZPOOL"/lxd/storage/containers/"$CONT_VAR"; (($? != 0)) && { echo "SSH command to setup mountpoint=legacy on destination exited with non-zero"; exit 1; }
|
|
||||||
ssh "$DEST_IP" -p $DEST_PORT "cat <<EOF | lxd recover
|
|
||||||
no
|
no
|
||||||
yes
|
yes
|
||||||
yes
|
yes
|
||||||
EOF"; (($? != 0)) && { echo "SSH command lxd recover exited with non-zero"; exit 1; }
|
EOF"; (($? != 0)) && { echo "SSH command incus admin recover exited with non-zero"; exit 1; }
|
||||||
fi
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Starting "$CONT_VAR" on destination"
|
echo "Starting "$CONT_VAR" on destination"
|
||||||
ssh "$DEST_IP" -p $DEST_PORT /snap/bin/lxc start "$CONT_VAR"; (($? != 0)) && { echo "SSH command to start container exited with non-zero"; exit 1; }
|
ssh "$DEST_IP" -p $DEST_PORT incus start "$CONT_VAR"; (($? != 0)) && { echo "SSH command to start container exited with non-zero"; exit 1; }
|
||||||
|
|
||||||
echo " "
|
echo " "
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
done
|
done
|
Loading…
Reference in a new issue