Вам действительно нужна побитовая копия всего удаленного диска? например для цифровой криминалистики?
Если нет, то если вам просто нужна копия разделов и данных на них, вы можете сэкономить много времени и передать полосу пропускания путем:
sfdisk
. Например:
ssh user@hostip sudo sfdisk -d /dev/sda | sudo sfdisk /dev/sdc
или в два этапа с временным файлом:
ssh user@hostip sudo sfdisk -d /dev/sda > /tmp/sda.txt
sudo sfdisk /dev/sdc < /tmp/sda.txt
partclone
для клонирования только тех частей файловой системы, которые используются в данный момент, игнорируя все пустое пространство и удаленные файлы и т. д. Например:
ssh user@hostip sudo partclone.ext4 -c -s /dev/sda1 -o - |
sudo partclone.ext4 -r -s - -o /dev/sdc1
partclone
поддерживает все общие и некоторые необычные файловые системы, используемые в Linux (ext2 / 3/4, btrfs, xfs и т.д.) и Windows (NTFS, FAT).
partclone упакован для большинства дистрибутивов, включая debian. sfdisk
является частью пакета util-linux
.
Вам все еще нужно решить проблему ssh / sudo, но @Gilles дал на это хороший ответ.
Самый простой способ избавиться от запросов на ввод пароля - это сделать все это как root ( sudo -i
, чтобы получить корневую оболочку), поэтому вам не нужно начинать каждую команду с помощью sudo
и (как root) запустить ssh-copy-id hostip
, чтобы установить ssh-ключ root @ localhost в ~ / .ssh / authorized_keys
на hostip. Затем вы можете запустить:
ssh hostip sfdisk -d /dev/sda | sfdisk /dev/sdc
ssh hostip partclone.ext4 -c -s /dev/sda1 -o - |
partclone.ext4 -r -s - -o /dev/sdc1
Если вы используете ssh-agent, вам нужно будет ввести кодовую фразу для корневого ключа не более одного раза (или не вводить вообще, если вы использовали ее ранее).
Команда
dd if=/dev/urandom bs=4 count=1 2>/dev/null | od -An -tu1
генерирует данные типа
251 113 126 026
, попросив dd
прочитать четыре байта из устройства urandom
, а затем преобразовав их в серию целых чисел без знака по 1 байту каждое с помощью od
.
Это передается set
посредством подстановки команд ($(...)
), и set
устанавливает позиционные параметры $1
, $2
, $3
и $4
в целые числа.
Затем над этими целыми числами выполняются некоторые проверки, и цикл продолжается до тех пор, пока один из тестов не пройден. :
в теле цикла не является операцией -и требуется только для выполнения грамматики оболочки.
Другой способ генерировать случайные IP-адреса (вне диапазонов частных адресов):
$ nmap -n -iR 10 -sL | awk '/report for/ { print $NF }'
221.37.208.42
121.3.97.158
203.225.119.103
145.139.220.88
95.153.25.126
149.73.57.221
165.178.177.39
11.187.21.175
175.211.240.124
130.89.42.47