DigitalOcean/image migration
In order to maintain backups of disk images without having to pay DigitalOcean for them monthly, it would be useful to be able to download them and then later upload any that need to be used again.
At the present time, downloading does not seem to be possible; the only instructions I have found so far not only don't work, but couldn't even work in theory as I understand it -- in that they use sshfs to mount the volume's filesystem locally, then try to use dd (a volume-copying tool) to do the copying.
Tentatively, uploading/restore is fully supported, although this is still limited to images that are based on a Linux-like filesystem.
Notes
Backup
I got an error with the command they suggested, and modified it to this:
root@statler:/mnt# sudo sshfs -o allow_other root@157.245.133.24:/ /mnt/droplet
(If doing this on a Macintosh, see /backup/MacOS.)
...but then this didn't work:
dd if=/mnt/droplet of=tootcat2.hypertwins.net-1523357095826-abandoned dd: error reading '/mnt/droplet': Is a directory
Tentatively, this seems to be the way to go, for an image that's running as a virtual machine.
1. Find the device name for the root filesystem:
Filesystem 1K-blocks Used Available Use% Mounted on udev 1530884 0 1530884 0% /dev tmpfs 308032 31616 276416 11% /run /dev/vda1 50758760 12572412 38169964 25% / tmpfs 1540156 4 1540152 1% /dev/shm tmpfs 5120 0 5120 0% /run/lock tmpfs 1540156 0 1540156 0% /sys/fs/cgroup /dev/sda 51475068 30045492 18791752 62% /mnt/cloud4-01 tmpfs 308032 0 308032 0% /run/user/0
This tells me that my main partition is /dev/vda1
and that I need 50,758,760 kb (50 GB) of space to store the image. Presumably, then, the entire (bootable) drive is at /dev/vda>
.
2. cd to a local drive with enough room.
3. Download the image:
Adapting these instructions: https://unix.stackexchange.com/questions/132797/how-to-dd-a-remote-disk-using-ssh-on-local-machine-and-save-to-a-local-disk
- Model: ssh user@remote "dd if=/dev/sda | gzip -1 -" | dd of=image.gz
- Live example:
ssh root@cloud4.vbz.ovh "dd if=/dev/vda | gzip -1 -" | dd of=cloud4.live.gz
This takes a long time, so you may want to check up on the size of the output file (in this case, cloud4.live.gz) to see how it's progressing.
Also, copying an image while the disk is in use (which seems to be unavoidable with Digital Ocean) may cause inconsistencies in the resulting image, so running fsck on it afterwards, and then manually spot-checking the contents for sanity, is probably a good idea.
(Currently waiting for my own image to download; will then be able to see if this worked.)
not checked
- https://www.linode.com/docs/platform/disk-images/copying-a-disk-image-over-ssh/
- https://www.ndchost.com/wiki/server-administration/netcat-over-ssh
- https://www.thegeekdiary.com/how-to-clone-linux-disk-partition-over-network-using-dd/
- https://ubuntuhak.blogspot.com/2012/10/how-to-create-format-and-mount-img-files.html
dead-ends
Restore
Possibly the "custom images" feature is the way to go?