LINUX.ORG.RU

Полное копирование системы.


0

1

Всем здрям, в общем такой вопрос:
Есть винт на 250Гб котором установленна и настроенна ОС, требуется скопировать все это дело на другой винт 500Гб что бы после его можно было воткнуть в ПК и загрузиться. Вот думаю хватит ли только одного
dd if=/dev/sda1 of=/dev/sdb2 bs=4096 conv=noerror ? Кто уже этим занимался просветите пжлста.

★★★★★

Да по идее тебе должно хватить просто cp, ну и потом поправить граб и фстаб, если надо.

Zhbert ★★★★★
()

> dd if=/dev/sda1 of=/dev/sdb2 bs=4096 conv=noerror
Если размеры разделов совпадают, это может сработать. Делать это, естественно, нужно с livecd.

Не забудьте модмонтировать этот раздел, подмонтировать внутрь /proc, /sys и /dev, chroot'нуться и переставить загрузчик.

AITap ★★★★★
()
Ответ на: комментарий от AITap

поподробнее вот здесь: «Не забудьте модмонтировать этот раздел, подмонтировать внутрь /proc, /sys и /dev, chroot'нуться и переставить загрузчик.» То есть я должен монтировать /dev/sda1 допустим в /mnt/sda1 потом chroot /mnt/sda1, потом mount -a, потом делать dd if=/mnt/sda1 of=/dev/sdb2 bs=4096 conv=noerror ??? я правильно вас полял?

splinter ★★★★★
() автор топика

Я тупо через mc копировал. Все права сохранились. Только потом grub на новом месте установил и все.

ATIpro ★★
()
Ответ на: комментарий от splinter

Нет, делаешь cp -a, потом монтируешь внутри раздела proc sys dev, делаешь chroot и переставляешь загрузчик (запускаешь grub-install или lilo в зависимости от загрузчика). dd делать категорически не надо !

Reset ★★★★★
()
Ответ на: комментарий от splinter

Нет, видимо AITap ошибся., или не до конца выразил мысль.

В том случае, если вы хотите воспользоваться dd - то вам не нужно монтировать разделы, нужно на новом диске создать такуюже разметку дисков, думаю можно воспользоваться sfdisk или просто вручную fdsik`ом, затем с помощью dd переносить посектороно разделы:

dd if=/dev/sda1 of=/dev/sdb1
...
dd if=/dev/sdan of=/dev/sdbn

Либо загрузиться с livecd, создать разделы на новом жёстком диске, создать на них файловую систему, смонтировать в правильной последовательности, затем смонтирвоать разделы с исходной системой и перенести:

cp -rp /mnt/old_hdd /mnt/new_hdd

kostik87 ★★★★★
()
Ответ на: комментарий от splinter

> То есть я должен монтировать /dev/sda1 допустим в /mnt/sda1 потом chroot /mnt/sda1, потом mount -a, потом делать dd if=/mnt/sda1 of=/dev/sdb2 bs=4096 conv=noerror ??? я правильно вас полял?
Совсем не правильно.

_Сначала_ скопировать данные (dd), _потом_ mount /dev/sdb2 /mnt, потом for f in proc sys dev; do mount -o bind /$f /mnt/$f; done, потом chroot /mnt, там внутри nano /etc/fstab и grub-install /dev/sdb, потом exit и umount.

AITap ★★★★★
()

столько мнений, чувствую завтра будет веселый денек :-)

splinter ★★★★★
() автор топика

Моя рабочая версия быстрой переброски системы:

1.грузимся с liveCD (чтобы правильно скопировался каталог dev)

2.# cp -a /dev/sda1/* /dev/sdb2 (копируем рекурсивно всю(!) систему со всеми(!) атрибутами, копируя линки, а не файлы на которые они ссылаются, т.е. получается точная структура файлов и каталогов)

3.устанавливаем grub на новый диск:

# grub (входим в режим команд grub)

# root (hd1,1) (если не ошибаюсь именно так будет обозначаться sdb2)

# setup (hd1) (устанавливаем grub)

# quit или exit (не помню какая из них работает выходом из командной оболочки grub)

4.reboot (в уже новую систему)

P.S. Работает с grub первой версии, как со второй не знаю.

glibych ★★
()

1) cp -a
2) rsync -a
3) dd
4) mdadm raid1

В любом случае надо будет править /etc/udev/rules.d/70-persistent-net.rules, /etc/fstab, настройки hostname и переставлять загрузчик.

AnDoR ★★★★★
()

rsync юзай

anonymous
()

Попробуй Clonezilla.

bsdfun ★★★★★
()
Ответ на: комментарий от glibych

Забыл добавить, что возможно потребуется скорректировать два конфигурационных файла /boot/grub/grub.conf и /etc/fstab. Это уже зависит от того оставите ли Вы в системе старый диск и какую схему именования дисков используете. Теперь кажись ничего не забыл.

glibych ★★
()

В слаке есть какой то:

System management commands DUMP(8)

NAME dump - ext2/3/4 filesystem backup

DESCRIPTION Dump examines files on an ext2/3/4 filesystem and determines which files need to be backed up. These files are copied to the given disk, tape or other storage medium for safe keeping (see the -f option below for doing remote backups). A dump that is larger than the output medium is broken into multiple volumes. On most media the size is determined by writing until an end-of-media indication is returned. ...

и restore тоже я так понимаю с пакета dump. Оно?

splinter ★★★★★
() автор топика
Ответ на: комментарий от anonymous

>cp -a

Для копирования системы это плохой путь. Жёсткие ссылки будут копироваться как файлы.

у меня таких аж на ~10кб было)))

и копировать нужно cp -ax - чтоб только корень, без проц и дев

anykey_mlya
()
Ответ на: комментарий от splinter

cp -a, но я добавлял ещё и х, чтобы подмонтированные ФС не копировались, то есть: cp -ax

Un
()
Ответ на: комментарий от anonymous

И много у тебя в корне жёстких ссылок?

Un
()

Я делал так:

1. cp -xpr /mnt/old_root /mnt/new_root
2. mount --bind /dev /mnt/new_root/dev
3. chroot /mnt/new_root
4. mount -t proc proc /proc
5. mkswap /dev/new_swap
6. установка груба и правка /etc/fstab

переносил таким образом кучу раз, проблем никаких.

Alsvartr ★★★★★
()

Если второй винт пустой и больше размером, то не ссы, делай dd if=/dev/sda of=/dev/sdb (лучше всего на первом ранлевеле)
Потом только на sdb разделы почекай.
Я так сотни машин отпингвинил.
Потом, если что, раздел растянешь, или новые на неиспользованном месте наделаешь.

imul ★★★★★
()
Ответ на: комментарий от ZenitharChampion

Мне кажется, что в cp -apx параметр p лишний. Вот что будет означать команда cp -ax:

Раскрываем параметры команды:

a= -dR --preserve=all (d=--no-dereference --preserve=link)

a= --no-dereference --preserve=link -R --preserve=all

a= --no-dereference --preserve=link --recursive --preserve=all

упрощаем до: a=--no-dereference --recursive --preserve=all

--no-dereference означает не следовать по символьным ссылкам в ИСТОЧНИКЕ

--recursive означает рекурсивно копировать каталоги

--preserve=all означает сохранять указанные атрибуты (по умолчанию mode,ownership,timestamps) и, если возможно, дополнительные атрибуты: context, links, xattr, all

-p означает --preserve=mode,ownership,timestamps что уже включено в --preserve=all насколько я понимаю. Или я не прав?

-x означает оставаться в пределах одной файловой системы

Вывод: команда cp -apx равнозначна cp -ax

glibych ★★
()
Ответ на: комментарий от Alsvartr

cp -xpr скопирует не все, а только mode,ownership и timestamps. Будут проигнорированы context, links, xattr.

glibych ★★
()
Ответ на: комментарий от anykey_mlya

proc копировать не обязательно - при выгрузке системы он всегда пуст, достаточно создать пустой каталог proc. dev нельзя копировать из работающей системы, т.к. есть большая вероятность получить неработоспособный dev в копии, именно поэтому я включил пункт загрузки с liveCD в мини руководство. А вот если кто подскажет как копировать dev не выходя с рабочей системы - буду признателен.

glibych ★★
()
Ответ на: комментарий от glibych

А вот если кто подскажет как копировать dev не выходя с рабочей системы - буду признателен.

Сначала объясни, зачем копировать виртуальное пофайловое представление блочных устройств, которое создаётся на лету при загрузке системы.

iZEN ★★★★★
()
Ответ на: комментарий от iZEN

не создается оно на лету у меня хоть тресни) - переместите временно все содержимое каталога dev в другое место, перезагрузитесь и система загрузив ядро вывалится в черный экран.

glibych ★★
()

1. Не помню точно, нужно проверять, но в разных версиях по-разному работает conv=noerror. Мне попадался случай, когда он при ошибке чтения вместо записывания нулей - просто ничего не записывал и происходил как-бы сдвиг данных...

2. почему именно 4096?

3. с помощью blockdev надо выставить все readahead в 0, если боишься бэд-секторов. Иначе, бэды будут читаться по несколько раз, и можешь получить IO error при чтении нормальных данных.

4. ещё один метод (для извращенцев) поднять зеркало mdadm без метаданных, состоящее из твоих двух винтов. но если вдруг оно начнет не втом направлении синхронизировать, то копец.

dmsetup create rty
0 1000 zero
1000 1 zero
1001 1000 zero
^D
root@mmarkk-work:~# dd if=/dev/mapper/rty bs=512 conv=noerror 
2001+0 записей считано
2001+0 записей написано
скопировано 1024512 байт (1,0 MB), 0,167651 c, 6,1 MB/c
dmsetup create qwe
0 1000 zero
1000 1 error
1001 1000 zero
^D
dd: чтение «/dev/mapper/qwe»: Ошибка ввода/вывода
1000+0 записей считано
1000+0 записей написано
скопировано 512000 байт (512 kB), 0,0223557 c, 22,9 MB/c
dd: чтение «/dev/mapper/qwe»: Ошибка ввода/вывода
1000+0 записей считано
1000+0 записей написано
.......
скопировано 512000 байт (512 kB), 0,0225503 c, 22,7 MB/c
1993+0 записей считано
1993+0 записей написано

Проверки показывают, что оно действительно записало 1993*512 байт:

root@mmarkk-work:~# dd if=/dev/mapper/qwe bs=512 conv=noerror 2>/dev/null | wc -c 
1020416
root@mmarkk-work:~# echo $((1020416 / 512 ))
1993

«Думайте сами, решайте сами, юзАть или не юзАть»

mmarkk
()
Ответ на: комментарий от glibych

А у меня в FreeBSD устройства в /dev создаются на лету даже при подключении устройств на горячую — devfs, в частности, демон devd в действии.

переместите временно все содержимое каталога dev в другое место

ЗАЧЕМ?

перезагрузитесь и система загрузив ядро вывалится в черный экран.

Бред какой-то.

iZEN ★★★★★
()
Ответ на: комментарий от splinter

Использовать bacula для однократного копирования одной системы, это всё равно что использовать шагающий экскаватор для того что бы выкопать один арык.

sin_a ★★★★★
()
Ответ на: комментарий от iZEN

ЗАЧЕМ?

Затем что Вы сами хотели объяснения - «Сначала объясни, зачем копировать виртуальное пофайловое представление блочных устройств, которое создаётся на лету при загрузке системы.»

Вы сказали, что у Вас оно создается на лету. При изначально пустом каталоге dev система просто не загрузится.

Бред какой-то.

А Вы пробовали загрузится с пустым dev прежде, чем заявлять что это бред?

glibych ★★
()
Ответ на: комментарий от glibych

А Вы пробовали загрузится с пустым dev прежде, чем заявлять что это бред?

Каталог /dev девственно чист на остановленной системе.

iZEN ★★★★★
()
Ответ на: комментарий от GotF

Система работает с udev. Просто в ходе обсуждения с iZEN исходный смысл вопроса, входящего в основную тему, был искажен с изначального - «как копировать dev не выходя с рабочей системы» до «Сначала объясни, зачем копировать виртуальное пофайловое представление блочных устройств, которое создаётся на лету при загрузке системы» и в конечном итоге все было названо бредом. Напомню, что вопрос темы автора - «Полное копирование системы.», а не «эмоциональные всплески».

glibych ★★
()
Ответ на: комментарий от iZEN

Неужели это у меня только там остаются 4-ре файла?!

/dev/console

/dev/null

/dev/tty1

/dev/zero

glibych ★★
()
Ответ на: комментарий от iZEN

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

glibych ★★
()
Ответ на: комментарий от glibych

Каталог /dev в качестве точки монтирования должен быть включен в состав архива системы, но его содержимое архивировать не нужно и даже опасно.

iZEN ★★★★★
()
Ответ на: комментарий от iZEN

Непонятно тогда из-за чего у меня без этих файлов не грузится система. Придется разобраться. Спасибо.

glibych ★★
()
Ответ на: комментарий от iZEN

Не грузится без этих 4-х файлов хоть тресни. Возможно причина в том, что у меня ядро хоть и модульное, но работает без initrd.

glibych ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.