Перенос FreeBSD на новый винт
В первую очередь, смотрим, как были смонтированы наши разделы на старом винте:
proxy.dtservice.ru:~#> df -h Filesystem Size Used Avail Capacity Mounted on /dev/ad0s1a 989M 73M 837M 8% / devfs 1.0K 1.0K 0B 100% /dev /dev/ad0s1d 2.9G 10K 2.7G 0% /tmp /dev/ad0s1f 24G 6.9G 15G 32% /usr /dev/ad0s1e 6.8G 4.1G 2.1G 66% /var devfs 1.0K 1.0K 0B 100% /var/named/dev
Подключаем новый винт в принципе к любой машине. Нарезаем на нем точно такие же слайсы (имеется ввиду буквы, размер делаем таким какой нам требуется), форматируем, делаем загрузочным. Все это делается при помощи загрузочного диска с FreeBSD.
Подключаем старый винт и новый. Грузимся со старого в Single mode. Монтируем все наши разделы:
#mount -a
Создаем нужные промежуточные директории - точки монтирования для слайсов нового диска:
cd /mnt mkdir root mkdir usr mkdir var
Второй винт я подключал как мастер на IDE2. таким образом обращаться к нему нужно как ad2 с соответствующими поправками на имена слайсов. Примонтируем разделы нового диска в созданные нами точки монтирования:
mount /dev/ad2s1a /mnt/root mount /dev/ad2s1f /mnt/usr mount /dev/ad2s1e /mnt/var
На этом этапе все готово для переноса. Заходим в нужный раздел и копируем старые данные на новый диск:
cd / find . -xdev -print | cpio -m -p -V /mnt/root cd /var find . -xdev -print | cpio -m -p -V /mnt/var cd /usr find . -xdev -print | cpio -m -p -V /mnt/usr
На FreeBSD 8.2 эти команды вызывают ошибку. Подправили утилиту cpio - из нее исчезла опция -V, вместо нее используется -v. Кроме того, если заливать разделы на уже имеющуюся операционку, то файлы не будут переписаны. И если мы потом стартанем с такого винта, то получим ту же самую систему, не ту которую пытались перегнать на новый винт. Связано это с тем, что по умолчанию имеющиеся файлы не переписываются. Чтобы исправить это, команды должны быть такими:
cd / find . -xdev -print | cpio -p -m -v -u /mnt/root cd /var find . -xdev -print | cpio -p -m -v -u /mnt/var cd /usr find . -xdev -print | cpio -p -m -v -u /mnt/usr
Опции:
-p - Читать листинг файлов со стандартного ввода и копировать файлы в указанный каталог.
-m - Устанавливать время модификации и создания такое как у исходных файлов.
-v - Печатает каждое имя файла на stderr, вместе с -t выводит более детальный листинг по каждому файлу. Вместо устаревшей -V.
-u - Безусловно переписывать имеющиеся файлы.
То же самое при помощи dump / restore:
cd /mnt/root; dump -f - / | restore -rf - cd /mnt/var; dump -f - /var | restore -rf - cd /mnt/usr; dump -f - /usr | restore -rf -
Вообще, одна из гуру FreeBSD и Unix вообще Elizabeth D. Zwicky проводила сравнительный тест различного рода программ копирования / восстановления. Со всеми тестами справились только dump / restore. Поэтому на заданный вопрос, что лучше использовать, она ответила: только dump. Сравнительные тесты убедительно показывают, что эти утилиты справились со всеми задачами на отлично.
/tmp я не копировал. Там копировать нечего. Нужно только не забыть поправить разрешения этого раздела, после того как копирование будет завершено и мы загрузимся с нового диска. Туда как правило должны иметь возможность писать все.