Linux mini-HOWTO

Скопируйте файлы со старого диска на новый


Вам, наверное, будет необходимо перейти в однопользовательский режим перед началом копирования диска - это необходимо для отключения системных демонов, остановки журналов и прекращения входа других пользователей в систему:

/sbin/telinit 1

При копировании жесткого диска вам надо скопировать все каталоги и файлы, включая ссылки.

Однако, вам не нужно копировать каталог /new-disk, потому что это и есть новый диск!

Более того, вам надо создать на новом диске каталог /proc, но содержимое этого каталога копировать не нужно: /proc - это виртуальная файловая система, и в ней нет настоящих файлов, а есть лишь информация о системе и процессах, в ней работающих.

Существуют 3 разных способа копирования старого диска на новый. Это может занять значительное время, особенно если у вас большой диск или мало оперативной памяти. Минимум скорости копирования - примерно 10 Мб в минуту, а, скорее всего, это будет происходить значительно быстрее.

Вы можете следить за копированием командой "df", запущенной с другого терминала. Используйте "watch df" или "watch ls -l /new-disk", чтобы видеть отчет, обновляемый раз в две секунды; нажмите клавиши Ctrl-C для прекращения просмотра. Помните, однако, что сам запуск команды "watch" может замедлить процесс копирования.

cp -ax / /new-disk

Это наиболее простой способ, но он подходит, только если ваша исходная система находилась на одном разделе.

Опция -a сохраняет исходную файловую систему настолько, насколько возможно. Опция -x ограничивает работу команды cp одной файловой системой - поэтому не нужно беспокоиться о каталогах /new-disk и /proc.

Для пользователей SuSE: . Используя этот метод, вы должны также создать каталог /dev/pts на новом диске. Используйте команду "mkdir /new-disk/dev/pts".

(Замечание: Новые версии cp, при использовании опции -x, создадут пустые каталоги /new-disk/new-disk и /new-disk/proc. В этом случае необходимо удалить каталог /new-disk/new-disk, и оставить /new-disk/proc..)

cd / && echo cp -a `/bin/ls -1Ab | egrep -v "^new-disk$|^proc$"` /new-disk | sh


(напишите все это в одной строке)

Эта команда перейдет в корневой каталог и затем скопирует все файлы и каталоги, кроме /new-disk и /proc в /new-disk. Заметьте, что первый символ после ls - это цифра 1, а не буква L!

Эта команда должна работать в любом случае.

cp -a /bin /boot /dev /etc /home /lib /lost+found /mnt /root /sbin /tmp /usr /var /new-disk

(напишите все это в одной строке)

Последний каталог - /new-disk - это назначение команды cp. Все остальные каталоги - источники. Таким образом, мы копируем все каталоги из списка в /new-disk.

При применении этого метода вы просто перечисляете каталоги, которые хотите скопировать. Здесь мы указали все каталоги, кроме /new-disk и /proc. Если вы не можете использовать первые два метода по каким-либо причинам, то всегда можете вручную указать каталоги, которые необходимо скопировать.

Также надо учесть, что если в корневом каталоге есть файлы, то их тоже надо скопировать отдельной командой. В частности, это касается Debian и Slackware, так как эти дистрибутивы помещают файлы в корневой каталог:
cp -dp /* /.* /new-disk


В предыдущих версиях этого Мини-HOWTO упоминалось, что вы можете использовать "tar" для копирования диска, но в этом методе была обнаружена ошибка. Конечно, существуют и другие методы скопировать диск, но эти три являются наиболее простыми, быстрыми и надежными.

После использования любого из этих методов вам также надо создать каталог /proc на новом диске, если его еще нет:

mkdir /new-disk/proc


Затем вы можете проверить файловую систему нового диска, если хотите:
umount /new-disk fsck.ext2 -f /dev/hdb1 mount -t ext2 /dev/hdb1 /new-disk


Если на новом диске существует больше одного раздела, то вам придется отключить их все "снизу вверх" до запуска fsck.ext2: в соответствии с примером, приведенном выше, вам надо сначала отключить разделы 3-го уровня, затем 2-го и, только в конце, первого.

Можно сравнить два диска, чтобы убедиться, что все скопировано верно:
find / -path /proc -prune -o -path /new-disk -prune -o -xtype f -exec cmp {} /new-disk{} \;


(напишите все это в одной строке)

Для пользователей Slackware:

стандартная "базовая" установка Slackware (только файлы серии "A") не включает команду "cmp", поэтому это сравнение не запустится, если у вас установлены только базовые файлы. Команда "cmp" находится в файлах серии "AP1".

Здесь мы сравниваем только обычные файлы, символьные же и блочные устройства (из каталога /dev), гнезда (sockets), и т.п. здесь не учитываются, так как команда "cmp" работает с ними не совсем корректно. Мы будем не против, если кто-нибудь подскажет нам, как сравнить эти "специальные" файлы.


Содержание раздела