Linux system copy over network using tar and sshKopiowanie systemu linux przez sieć przy pomocy ssh i tar

We assume that on the machine root@address, we have mounted hard disk under /mnt/dest (it is the target machine, which we copy the operating system to). I assume that we are logged in to the source system (which we copy the operating system from). We  copy one directory after another, the entire operating system.

Command „ls /”  lists directories to copy. Then, copy each folder to the target system. You can try to copy all at once, but I always preferred to copy one directory after another to see and control what and how gets copied.

tar -cpf – /dir_to_copy/ | ssh root@adress tar -xpf – -C /mnt/destZakładamy, że na maszynie root@adress mamy podmontowany dysk w katalogu /mnt/dest (jest to maszyna docelowa, na którą kopiujemy system). Zakładam, że jesteśmy zalogowani na systemie źródłowym (z którego kopiujemy system). Kopiujemy katalog po katalogu, cały system.

Komendą „ls /” listujemy katalogi do skopiowania. Następnie kopiujemy każdy katalog do systemu docelowego. Można próbować kopiować wszystko na raz, jednak ja zawsze wolałem kopiować katalog za katalogiem, żeby widzieć i kontrolować co i jak się kopiuje.

tar -cpf – /dir_to_copy/ | ssh root@adress tar -xpf – -C /mnt/dest

This command will copy an entire directory /dir_to_copy including content and permissions to /mnt/dest/dir_to_copy on destination machine.

To check how much space folders occupy:

1. on the source system „cd /”
2. on the target system „cd /mnt/dest”
3. now issue command „du -h –max-depth=1”

Once you’ve copied all the directories we have to install the bootloader (grub in my case). Thus, on the target machine we:

1. In the file /mnt/dest/boot/grub/device.map we ensure whether hd0 points to the appropriate drive on the destination machine. Likewise, check your /etc/fstab and possibly change the device names (hda, sda, vda, etc.).
2. Chroot to the system directory, „chroot /mnt/dest”
3. Issue command „grub” (and thus enter into the grub menu, where issue next two commands)

grub; root (hd0,0)
root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub; setup (hd0)
setup (hd0)
Checking if „/boot/grub/stage1” exists… no
Checking if „/grub/stage1” exists… yes
Checking if „/grub/stage2” exists… yes
Checking if „/grub/e2fs_stage1_5” exists… yes
Running „embed /grub/e2fs_stage1_5 (hd0)”… 17 sectors are embedded.
succeeded
Running „install /grub/stage1 (hd0) (hd0)1+17 p (hd0,0)/grub/stage2 /grub/menu.lst”… succeeded
Done.

At this point, when You reboot the target machine You schould see system copied from the source machine booting up.

Powyższa komenda skopiuje cały katalog /dir_to_copy wraz z zawartością i uprawnieniami do katalogu /mnt/dest/dir_to_copy

Aby sprawdzić ile miejsca zajmują katalogi w folderze:

  1. na systemie źródłowym „cd /”
  2. na systemie docelowym „cd /mnt/dest”
  3. wykonujemy komendę: „du -h –max-depth=1”

Po skopiowaniu wszystkich katalogów musimy jeszcze zainstalować bootloader (w moim przypadku grub). Zatem na maszynie docelowej wykonujemy:

  1. W pliku /mnt/dest/boot/grub/device.map musimy upwenić się czy hd0 wskazuje na odpowiedni dysk na nowej maszynie. Tak samo sprawdzamy plik /etc/fstab i ewentualnie korygujemy nazwy urządzeń (hda,sda,vda, etc).
  2. Chroot do katalogu z systemem: „chroot /mnt/dest”
  3. Komenda: „grub” (w ten sposób wejdziemy do programu grub i w nim wykonujemy kolejno dwie komendy)

grub; root (hd0,0)
root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub; setup (hd0)
setup (hd0)
Checking if „/boot/grub/stage1” exists… no
Checking if „/grub/stage1” exists… yes
Checking if „/grub/stage2” exists… yes
Checking if „/grub/e2fs_stage1_5” exists… yes
Running „embed /grub/e2fs_stage1_5 (hd0)”… 17 sectors are embedded.
succeeded
Running „install /grub/stage1 (hd0) (hd0)1+17 p (hd0,0)/grub/stage2 /grub/menu.lst”… succeeded
Done.

W tym momencie po restarcie maszyny docelowej powinien nam wstać system skopiowany z maszyny źródłowej.

Comments are closed.