Cloning my Devuan partition recently, I used an HDD enclosure to partition and format the drive with gparted from Artix, I also did a fresh Artix base install like that directly from Artix, I made some notes which I cannot say for sure are 100% complete, but I really don't think there was much more to it than this to copying Devuan, I think I had to chroot in and redo a kernel install or mkinitcpio once it was in the target machine rather than the enclosure on Artix to get it to boot initially, can't remember exactly. But it's pretty simple as you can see, if the system isn't "running" then /dev and /proc and so on are just empty directories so you can copy the lot. You might need some more / different steps for uefi, extra partitions for /boot or /home depending on your setup.
cp -a entire partition to new one
modify /etc/fstab
chroot in, (Artix to Artix you can simply use "artix-chroot" from artools package instead of mount bind)
$ sudo mount /dev/sdb5 mnthome/
$ for d in dev sys run proc; do sudo mount --bind /$d ~/mnthome/$d; done
$ sudo chroot ~/mnthome
# bash
# update-initramfs -c -k all
updates all installed kernel initramfs
# exit
# exit
$ for d in dev sys run proc; do sudo umount -r ~/mnthome/$d; done
Chrooting from Artix, PATH is wrong and needs some extra entries (this part is just due to it being Devuan not Artix):
export PATH="$PATH:/bin:/usr/sbin/:/sbin"
Boot error, even after redoing initramfs:
ALERT! UUID=xyz123blahblah does not exist. Dropping to a shell
Perhaps I should check fstab, reinstall kernel? That was the old UUID from the previous HDD, when I checked it.
That last bit was because I needed to run update-grub chrooted into Devuan then update-grub in Artix (the main grub that has been grub-install'd), because the Artix grub os-prober took the entries from the other /boot/grub/grub.cfg including the UUID which was wrong, as it was still pointing to the old HDD that it was copied from.