Source: server running rather obsolete Fedora Core 1 with Apache, sendmail, ftp and other stuff.
Target: any Linux server with at least one hard drive of appropriate disk space installed (in this case target server was running Knoppix).
Third server: any ssh running system.
First of all it’s necessary to get all servers to be accessible to each other via ssh. Read your distribution’s manual to find out how to achieve it.
There are several possible ways to move Linux to another server by means of using dump/restore utilities over ssh. I’ve chosen this one: I’ve saved source server’s filesystem backup to third server over ssh and then restored this backup to target server (again over ssh).
To do this I’ve installed dump 0.4b41 onto source server and performed the following commands to save it’s /boot and / filesystems backups to third server (both in one line):
dump -0uan -f – /boot | ssh -c aes256-cbc @ dd of=/home/artemn/backup/dump/dump-boot-l0.bak
dump -0uan -f – / | ssh -c aes256-cbc @ dd of=/home/artemn/backup/dump/dump-root-l0.bak
It took several hours to transmit 20Gb over Internet in my case. If you’re performing these operations remotely I recommend to use utility screen to be sure that transmitting won’t be stopped when ssh session to source server is closed. To use it just login to source server over ssh and type screen and then dump command with necessary agruments (see below). In case you’ve been disconnected just ssh again and restore screen session by command screen -r.
You can control above mentioned dump command activity by watching file size of dump-root-l0.bak and dump-boot-l0.bak files at third server.
After dump is finished you can check backup at third server by performing restore -i -f dump-root-l0.bak and walking through directories in backup file (use ls command). For further information read restore manual (interactive restore section): man restore.
Then login to target server and partake hard disk in the same way as it’s done at source server. In my case I’ve created three partitions /dev/sda1 for /boot, /dev/sda2 for / and /dev/sda3 for swap. Target server can be running Live CD like Knoppix and have only one hardware drive.
When partitioning is done create filesystems at every partition:
mkfs -t ext2 /dev/sda1
mkfs -t ext2 /dev/sda2
Then set volume labels to just created filesystems by commands:
tune2fs -L “/boot” /dev/sda1
tune2fs -L “/” /dev/sda2
Labels should be the same as at source server (you can see them by executing tune2fs -l /dev/sda1 and tune2fs -l /dev/sda2 at source server). Sometimes it’s also necessary to set up volume label for swap filesystem.
When it’s done mount created filesystems by commands:
mount /dev/sda1 /mnt/sda1
mount /dev/sda2 /mnt/sda2
(be sure that /mnt/sda1 and /mnt/sda2 are created).
To restore filesystem from backed up copy, ‘cd‘ to destination directory and restore data by commands:
ssh @ “cat /home/artemn/backup/dump/dump-boot-l0.bak” | restore -r -f -
ssh @ “cat /home/artemn/backup/dump/dump-root-l0.bak” | restore -r -f -
In case of success /mnt/sda1 and /mnt/sda2 will contain the same files at /boot and / directories at source server.
When filesystems restoration is done we should install boot loader onto hard drive of target sever: start grub console by typing grub and then type root (hd0, 0), then setup (hd0). After this boot loader will be installed and target server can be booted from hard disk.
Note: be sure that dump and restore commands run at source and target servers are of same versions as it causes problems sometimes. I’ve used 0.4b41 at Fedora Core 1 (source) and Knoppix (target server).
Another note: I’ve spent a day to solve the problem with kernel panic when booting into target server’s hard disk. The problem was in volume labels. So don’t forget to set them.
Hope it helps somebody! Good luck, mates!