Cloning: различия между версиями

Материал из wiki.nntc.nnov.ru
Перейти к навигации Перейти к поиску
Строка 1: Строка 1:
 +
=Клонирование различными способами=
 +
 +
==dd, nc, ansible (клонирование "гирляндой")==
 +
 +
Почти как широковещательное, только лучше :-) Наверное...
 +
 +
apt-get install ansible
 +
mkdir /opt/ansible_cloning
 +
cd /opt/ansible_cloning
 +
 +
cat << EOF > ansible.cfg
 +
[defaults]
 +
host_key_checking = false
 +
inventory        = ./hosts.txt
 +
EOF
 +
 +
cat << EOF > hosts.txt
 +
src  ansible_host=172.16.223.166 ansible_user=root ansible_ssh_pass=partedmagic
 +
dst1 ansible_host=172.16.223.53  ansible_user=root ansible_ssh_pass=partedmagic
 +
dst2 ansible_host=172.16.223.173 ansible_user=root ansible_ssh_pass=partedmagic
 +
EOF
 +
 +
 +
cat << EOF > clone.sh
 +
#!/bin/bash
 +
#ansible dst1,dst2 -m shell -a "wipefs -af /dev/sda" # if need
 +
ansible dst2 -m shell -a "nc -l -p 19000 | dd of=/dev/sda status=progress 2> /cloning.log" &
 +
sleep 1s;
 +
ansible dst1 -m shell -a "bash -c 'nc -l -p 19000 | tee >(dd of=/dev/sda) | nc 172.16.223.173 19000'" &
 +
sleep 1s;
 +
ansible src -m shell -a "dd if=/dev/sda | nc 172.16.223.53 19000"
 +
ansible all -m shell -a "killall nc"
 +
EOF
 +
 +
 +
cat << EOF >
 +
EOF
 +
 +
 +
 +
 
==dd через ssh==
 
==dd через ssh==
  

Версия 01:08, 27 ноября 2021

Клонирование различными способами

dd, nc, ansible (клонирование "гирляндой")

Почти как широковещательное, только лучше :-) Наверное...

apt-get install ansible mkdir /opt/ansible_cloning cd /opt/ansible_cloning

cat << EOF > ansible.cfg [defaults] host_key_checking = false inventory = ./hosts.txt EOF

cat << EOF > hosts.txt src ansible_host=172.16.223.166 ansible_user=root ansible_ssh_pass=partedmagic dst1 ansible_host=172.16.223.53 ansible_user=root ansible_ssh_pass=partedmagic dst2 ansible_host=172.16.223.173 ansible_user=root ansible_ssh_pass=partedmagic EOF


cat << EOF > clone.sh

  1. !/bin/bash
  2. ansible dst1,dst2 -m shell -a "wipefs -af /dev/sda" # if need

ansible dst2 -m shell -a "nc -l -p 19000 | dd of=/dev/sda status=progress 2> /cloning.log" & sleep 1s; ansible dst1 -m shell -a "bash -c 'nc -l -p 19000 | tee >(dd of=/dev/sda) | nc 172.16.223.173 19000'" & sleep 1s; ansible src -m shell -a "dd if=/dev/sda | nc 172.16.223.53 19000" ansible all -m shell -a "killall nc" EOF


cat << EOF > EOF



dd через ssh

  • загрузить две машины с pmagic (определить, кто будет донором, кто реципиентом)
  • настроить сеть между этими машинами (обычно DHCP это делает за вас), выяснить ip-адреса донора и реципиента
  • на доноре дать команду
dd if=/dev/устройство_донор | ssh root@ip_address_реципиента /bin/dd of=/dev/устройство_реципиент

например:

dd if=/dev/sda | ssh root@ip_address_реципиента /bin/dd of=/dev/sda

tar через ssh

  • загрузить две машины с pmagic (определить, кто будет донором, кто реципиентом)
  • настроить сеть между этими машинами (обычно DHCP это делает за вас), выяснить ip-адреса донора и реципиента
  • смонтировать устройства в директории на доноре и реципиенте
  • на доноре дать команду
cd /mnt/директория_донор
tar cvf - . | ssh root@ip_address_реципиента 'cd /mnt/директория_реципиент; tar xf -'

например:

tar cvf - . | ssh root@192.168.155.9 'cd /mnt/lin; tar xf -'