Перенос системы


 * Резервное копирование по сети

dd копирует устройство - диск из /dev/. Но не целиком, а ровно столько сколько на нем разбито. Например, если на ad0 разбито только 8Гб из 80, то dd скопирует только 8Гб. После копирования диск станет готов к монтированию, если только не надо fsck запускать.

Копирование dump
Особенности:
 * Нужно предварительно создать файловую систему на новом диске
 * Копирует только данные, а не весь диск
 * Требует доступного на запись раздела /tmp

Если на диске уже были разделы, то перепишет их (также информация о работе с диском Разбивка и форматирование диска). fdisk -I /dev/ad16 Разметка bsdlabel -w ad16 auto Поскольку для работ команд bsdlabel (временный файл редактора) и dump (чтобы сохранить файлы с информацией о списках файлов и прав (?)) требуется раздел /tmp в режиме записи, то создадим в оперативной памяти командой Mdconfig виртуальный диск и на него скопируем /tmp: du -h -d 0 /tmp - 2.2 мегабайта mdconfig -a -t malloc -s 50m mount /dev/md0 /media cd /media&& tar -C /tmp -cf -. | tar -C /media -xvf - umount /media && mount /dev/md0 /tmp Разделы удобно создать по подобию со старого диска, просмотреть которые можно командой: bsdlabel ad14s1 (название слайса в конце имени обязательно). На сообщения vi про файл сессии (в разделе /var) не обращать внимания. bsdlabel -e ad16s1 Создать раздел или разделы (букву указать надо! а не просто устройство или слайс) newfs ad16s1a Смонтируйте раздел с нового диска, куда будет переноситься информация. mount /dev/ad16s1a /mnt Запуск копирования cd /mnt && dump 0af - / | restore rf -

Копирование dd

 * Работает напрямую с устройством и создавать предварительно файловую систему не требуется
 * Копирует всегда весь диск. Даже если занят 1%, будет копировать весь диск.

Вместо ad10 и ad12 нужно подставить актуальные названия дисков. dd if=/dev/ad10 of=/dev/ad12 bs=2m

При работе команда dd не отображает прогресса, но нажав Ctrl+T можно его увидеть load: 0.54 cmd: dd 1205 [physrd] 0.08u 30.18s 2% 1680k 49692+0 records in 49692+0 records out 52105838592 bytes transferred in 906.122689 secs (57504176 bytes/sec) Из последней строчки можно понять, что уже скопировано 52Гб и копирование производится со скоростью 57Мегабайт в секунду: байты из начала последней строчки перевести в ГБ. (/1024 (K), /1024 (M), /1024 (G))

При скорости 57МБ/с копирование 400Гб диска займёт около 2 часов. (400087375360 bytes transferred in 7651.614027 secs (52287971 bytes/sec))

Примерную скорость копирования можно узнать командой: gstat -a

Копирование проблемного жёсткого диска
Таковым считается тот, при обращении к которому появляются различные ошибки (например, ad14: WARNING - SETFEATURES SET TRANSFER MODE taskqueue timeout - completing request directly). Обычно это сообщения белого цвета и выводятся на системную консоль.

Копирование диска производится теми же командами, что нормально функционирующего, но есть некоторые нюансы.

dd
По умолчанию команда dd работает "молча", но если встречается с ошибками при копировании и записи, то выводит сообщения в системный лог /var/log/messages и на системную консоль (?). После некоторого количества ошибок команда может аварийно завершить работу, посчитав, что ошибок слишком много.

В этом случае надо запустить dd параметром conv=noerror,sync (в конец строки добавив). Только надо учитывать, что скопированное таким образом может неживое.

dump
В случае, когда при выполнении дампа возникают ошибки чтения (READ DMA ERROR), он продолжает работу.

Возможные ошибки dump в процессе выполнения ( Они обычно перемещаются с сообщениями ядра (белого цвета), возникающими при обращении к проблемного сектору): expected next file 5324282, got 5324281 DUMP: read error from /dev/ad14s1a: Inpout|output: [sector 8XXXXXXXXXXXXXXX]: count 512

ddrescue
В интернете хорошие отзывы для восстановления оптических дисков. На практике не использовал.