На тесте использую систему Ubuntu Server 14.04.5 LTS.
И так, на работающей системе переключимся на root пользователя:
sudo -i
Проверим какие диски подключены:
fdisk -l
В моем случае первый используется диск /dev/sda (автоматически разбит системой при установке) и /dev/sdb — новый не размеченный:
/dev/sdb1 * Linux
/dev/sdb2 Расширенный
/dev/sdb5 Linux своп / Solaris
/dev/sdb
Разобьем новый диск /dev/sdb аналогично установленному /dev/sda:
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Форматируем основной раздел и swap на новом диске:
mkfs.ext4 /dev/sdb1
mkswap /dev/sdb5
Создадим пустую директорию, смонтируем в неё первый основной раздел нового диска:
mkdir /newhdd
mount /dev/sdb1 /newhdd
Посмотрим какие есть директории и скопируем в новый раздел всю информацию:
ls /
cp -ax /bin/ /boot/ /etc/ /home/ /lib/ /lib64/ /opt/ /root/ /sbin/ /tmp/ /usr/ /var/ /initrd.img vmlinuz /newhdd
cd /newhdd
mkdir /dev /proc /srv /sys /mnt
chmod 777 /tmp
После копирования посмотрим UUID разделов нового диска:
lsblk -o NAME,UUID
blkid
Изменим UUID старых разделов на новые в файле /newhdd/etc/fstab.
И на последок выполним команды в терминале для обновления grub:
mount /dev/sdb1 /newhdd
mount --bind /dev /newhdd/dev
chroot /newhdd
update-grub
exit
После этого можно выключить систему и отсоединить старый диск, при включении копия системы запустится уже с нового диска.
Кстати однажды скопировал всю информацию кроме директории lib64 и при выполнении chroot отображалась ошибка:
chroot: failed to run command ‘/bin/bash’: No such file or directory
Смотрите также мою статью:
Резервное копирование Linux в архив и восстановление из него
А можно ли скопировать ubuntu с данными, но на разделы других размеров? В связи с тем, что новый диск большего размера.
Для Ubuntu16 пришлось еще /run скопировать
спасибо БОЛЬШУЩЕЕ за статью! Только здесь нашел решение
«chroot: failed to run command ‘/bin/bash’: No such file or directory»
По-моему Ваша команда # mkdir /dev /proc /srv /sys /mnt должна вывалиться эксепшеном.
А эта # chmod 777 /tmp на мой взгляд не принесет должного результата.
Вероятно Вы хотели написать что-то подобное # mkdir dev proc srv sys mnt? и затем т.к. мы находимся уже в папке newhdd после команды # cd /newhdd — # chmod 777 tmp