Cloning: различия между версиями
Avp (обсуждение | вклад) |
Vovan (обсуждение | вклад) |
||
Строка 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
- !/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
- загрузить две машины с 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 -'