- Бэкап Linux и восстановление его на другом железе
- 1. Создание бэкапа
- Восстановление бэкапа на другом железе
- Как клонировать раздел или жесткий диск в Linux
- Как клонировать раздел Linux
- Как клонировать жесткий диск Linux
- Как сделать резервную копию MBR в Linux
- UNIX / Linux: Copy Master Boot Record (MBR)
- MBR Total Size
- 512 vs 446 Bytes
- dd command to copy MBR ( identically sized partitions only )
- dd command for two discs with different size partitions
- Linux sfdisk Command Example
- Task: Backup MBR and Extended Partitions Schema
- Task: Restore MBR and Extended Partitions Schema
Бэкап Linux и восстановление его на другом железе
Я работаю в организации с маленьким штатом, деятельность тесно связана с IT и у нас возникают задачи по системному администрированию. Мне это интересно и частенько я беру на себя решение некоторых.
На прошлой неделе мы настраивали FreePBX под debian 7.8, нанимали фрилансера. В процессе настройки оказалось, что сервер (да, я так называю обычный PC) не хочет грузится с HDD при подключенных USB 3G модемах, которые мы используем для звонков на мобильные, колупание BIOSа не помогло. Непорядок. Решил, что нужно перенести его на другую железяку. Так появилось сразу две связанные задачи:
- сделать бэкап сервера;
- восстановить бэкап на другом железе.
Гугление не дало внятных ответов, как это сделать, пришлось собирать информацию кусками и пробовать. Всякие acronis’ы отбросил сразу, ибо не интересно.
Опыт общения с linux-системами у меня небольшой: настройка VPN сервера на open-vpn, ftp-сервера и еще пара мелочей. Сам себя я характеризую как человека умеющего читать маны и править конфиги 🙂
Ниже я описываю свой частный случай и почему я поступил именно так. Надеюсь, новичкам будет полезно, а бородатые админы улыбнутся вспомнив молодость.
Начинаем копать теорию:
Второй способ требует наличия внешнего жесткого диска объемом не меньше раздела, который архивируем. Да и что с ним потом делать, непонятно, хранить на полочке? Остановился на tar, чуть сложнее в реализации, нужно будет создать MBR, но время создания/восстановления архива существенно меньше, хранить бэкап проще, полтора гига можно закинуть в облако и скачать, когда будет нужно. Записывать его можно на ту же live-флэшку, с которой буду грузиться.
Итак, план действия:
1. Создание бэкапа
Грузимся с live-флэшки, у меня это debian-live-7.8.0-amd64-standard.
Переключаемся на root:
Монтируем раздел, который будем архивировать, у меня это sda1, чтобы случайно не наломать дров, монтируем только для чтения. Посмотреть все свои разделы можно при помощи команд ls /dev | grep sd или df -l
Наша флэшка уже примонтирована, но в режиме только чтения, нужно перемонтировать для чтения-записи, чтобы писать туда бэкап.
Все готово для создания архива
Здесь у нас параметры: c — создать архив, v — выводить информацию о процессе, z — использовать сжатие gzip, p — сохраняем данные о владельцах и правах доступа, f — пишем архив в файл, путь к файлу, —exclude — исключаем из архива каталог (я исключил каталоги с записями разговоров и каталог с бэкапами FreePBX), /mnt/ — каталог, который архивируем.
Ждем… у меня вся подготовка и создание архива заняли 10 минут. Будь флэшка быстрее, уложился бы в 7-8 минут.
Складываем архив в надежное место за пределами офиса.
Восстановление бэкапа на другом железе
2. Размечаем диск, создаем файловую систему
Грузимся с live-флэшки, у меня все та же debian-live-7.8.0.
Переключаемся на root:
Размечаем диск. Мне понравилась утилита с псевдографическим интерфейсом cfdisk. Там все просто и понятно.
Удаляем все имеющиеся разделы. Я создал два новых раздела, один на 490 Gb под / (sda1) и 10 Gb под swap (sda2) в конце диска, т.к. он практически не будет задействован. Проверим типы разделов. Который под систему должен иметь тип 83 Linux, второй — 82 Linux swap / Solaris. Помечаем системный раздел загрузочным (bootable), сохраняем изменения и выходим.
Cоздаем файловую систему на первом разделе.
3. Распаковываем архив.
Монтируем отформатированный раздел
Распаковываем архив прямо с флэшки
Параметр —same-owner — сохраняет владельцев у распаковываемых файлов, x — извлекаем из архива, v — выводить информацию о процессе, p — сохраняем права доступа, f — указываем файл, который распаковываем, C — распаковываем в категорию.
4. Создаем MBR на новом диске.
Чтобы корректно создать загрузочную запись, монтируем рабочие каталоги к нашему будущему root-каталогу, у меня это /mnt. Каталоги /dev и /proc сейчас используются live-системой, используем параметр bind, чтобы они были доступны сразу в двух местах:
Переключаемся на новую систему используя chroot:
Делаем swap-раздел для новой системы:
Подключаем его же:
Чтобы grub работал, нужно указать ему правильные UUID разделов в fstab, сейчас там прописаны разделы предыдущей системы:
Открываем второй терминал (Alt+F2) под root:
И видим текущие UUID разделов.
Вручную переписываем их в fstab переключаясь между Alt+F1 и Alt+F2. Да, муторно, но попытки копировать занимали у меня больше времени, чем переписывание. Сохраняем fstab.
Устанавливаем grub2. У меня один физический диск, поэтому ставим его на sda:
На чистый диск должно встать без ошибок. Обновляем информацию из fstab:
Возвращаемся в Live-систему:
Размонтируем все каталоги:
Если вылазят процессы, которые используют эти каталоги, убиваем их используя fuser.
Все, поехали. Грузимся с жесткого диска:
Здесь статья должна была закончиться, но у меня возникли проблемы с подключением к интернету. Сервер видит сеть, видит компьютеры в ней, но в интернет не ходит… а это как бы важно для телефонии.
5. Тестирование и устранение неполадок.
Показывет интерфейсы eth1 и lo, гугление сказало, что gateway можно прописать только подключению eth0, остальные рассчитаны только на работу внутри сети.
Похоже, отсутствие eth0 вызвано способом переноса системы. Находим файл, который отвечает за нумерацию интерфейсов, смотрим туда:
Действительно, там два активных интерфейса, определенных MAC’ами. Комментируем первый, второму прописываем eth0.
Перезапуск /etс/init.d/networking не помог, поэтому перезагружаемся:
Подключаем донглы, проверяем, все работает.
Спасибо за внимание.
Источник
Как клонировать раздел или жесткий диск в Linux
Существует множество причин, по которым вы можете захотеть клонировать раздел Linux или даже жесткий диск. Большинство из которых связаны с созданием резервных копий ваших данных. Существует несколько способов добиться этого в Linux с помощью некоторых внешних инструментов, таких как partimage или Clonezilla.
Однако в этой статье мы рассмотрим клонирование дисков Linux с помощью инструмента под названием dd, который чаще всего используется для преобразования или копирования файлов.Поставляется dd предустановленным в большинстве дистрибутивов Linux.
Как клонировать раздел Linux
С помощью команды dd вы можете скопировать весь жесткий диск или только раздел Linux. Давайте начнем с клонирования одного из наших разделов. В моем случае у меня есть следующие диски: /dev/sdb, /dev/sdc.. Я буду клонировать файл /dev/sdb1/ в файл /dev/sdc1.
Сначала перечислите эти разделы с помощью команды fdisk, как показано ниже.
Теперь клонируйте раздел /dev/sdb1/ в /dev/sdc1, используя следующую команду dd.
Приведенная выше команда говорит dd использовать /dev/sdb1 в качестве входного файла и записать его в выходной файл /dev/sdc1.
Клонирование раздела Linux с помощью команды dd
После клонирования раздела Linux вы можете проверить оба раздела с помощью команды:
Как клонировать жесткий диск Linux
Клонирование жесткого диска Linux аналогично клонированию раздела. Однако вместо указания раздела вы просто используете весь диск целиком. Обратите внимание, что в этом случае рекомендуется, чтобы жесткий диск был того же размера (или больше), что и исходный диск.
Это должно было скопировать диск /dev/sdb с его разделами на целевой жесткий диск /dev/sdc. Вы можете проверить эти изменения, перечислив оба диска с помощью команды fdisk.
Как сделать резервную копию MBR в Linux
Команда dd также может быть использована для резервного копирования вашего MBR. Который находится в первом секторе устройства, перед первым разделом. Поэтому, если вы хотите создать резервную копию вашего MBR, просто запустите:
# dd if=/dev/sda of=/backup/mbr.img bs=512 count=1.
Приведенная выше команда говорит dd скопировать /dev/sda в /backup/mbr.img с шагом 512 байт, а опция count говорит скопировать только 1 блок.
Другими словами, вы говорите dd скопировать первые 512 байт из /dev/sda в предоставленный вами файл.
Резервное копирование MBR в Linux
Вот и все! команда dd — это мощный инструмент Linux, который следует использовать при копировании или клонировании разделов или дисков Linux. Но будьте очень осторожны так как любая неточность может стереть ваши данные.
Источник
UNIX / Linux: Copy Master Boot Record (MBR)
H ow do I copy MBR from one hard disk to another hard disk under Debian Linux?
To copy MBR simply use the dd command. dd command works under all Linux distros and other UNIX like operating systems too. A master boot record (MBR) is the 512-byte boot sector that is the first sector of a partitioned data storage device of a hard disk.
MBR Total Size
- 446 bytes – Bootstrap.
- 64 bytes – Partition table.
- 2 bytes – Signature.
512 vs 446 Bytes
- Use 446 bytes to overwrite or restore your /dev/XYZ MBR boot code only with the contents of $mbr.backup.file.
- Use 512 bytes to overwrite or restore your /dev/XYZ the full MBR (which contains both boot code and the drive’s partition table ) with the contents of $mbr.backup.file.
dd command to copy MBR ( identically sized partitions only )
Type dd command as follows:
dd if=/dev/sda of=/dev/sdb bs=512 count=1
Above command will copy 512 bytes (MBR) from sda to sdb disk. This will only work if both discs have identically sized partitions.
dd command for two discs with different size partitions
# dd if=/dev/sda of=/tmp/mbrsda.bak bs= 512 count=1
Now to restore the image to any sdb:
# dd if=/tmp/mbrsda.bak of=/dev/sdb bs= 446 count=1
The above commands will preserve the partitioning schema.
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
Linux sfdisk Command Example
Linux sfdisk command can make a backup of the primary and extended partition table as follows. It creates a file that can be read in a text editor, or this file can be used by sfdisk to restore the primary/extended partition table. To back up the partition table /dev/sda, enter:
# sfdisk -d /dev/sda > /tmp/sda.bak
To restore, enter:
# sfdisk /dev/sda
The above command will restore extended partitions.
Task: Backup MBR and Extended Partitions Schema
Backup /dev/sda MBR, enter:
# dd if=/dev/sda of=/tmp/backup-sda.mbr bs= 512 count=1
Next, backup entries of the extended partitions:
# sfdisk -d /dev/sda > /tmp/backup-sda.sfdisk
Copy /tmp/backup-sda.sfdisk and /tmp/backup-sda.mbr to USB pen or somewhere else safe over the network based nas server.
Task: Restore MBR and Extended Partitions Schema
To restore the MBR and the extended partitions copy backup files from backup media and enter:
# dd if=backup-sda.mbr of=/dev/sda
# sfdisk /dev/sda
🐧 Get the latest tutorials on Linux, Open Source & DevOps via
Category | List of Unix and Linux commands |
---|---|
Documentation | help • mandb • man • pinfo |
Disk space analyzers | df • duf • ncdu • pydf |
File Management | cat • cp • less • mkdir • more • tree |
Firewall | Alpine Awall • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04 |
Linux Desktop Apps | Skype • Spotify • VLC 3 |
Modern utilities | bat • exa |
Network Utilities | NetHogs • dig • host • ip • nmap |
OpenVPN | CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04 |
Package Manager | apk • apt |
Processes Management | bg • chroot • cron • disown • fg • glances • gtop • jobs • killall • kill • pidof • pstree • pwdx • time • vtop |
Searching | ag • grep • whereis • which |
Shell builtins | compgen • echo • printf |
Text processing | cut • rev |
User Information | groups • id • lastcomm • last • lid/libuser-lid • logname • members • users • whoami • who • w |
WireGuard VPN | Alpine • CentOS 8 • Debian 10 • Firewall • Ubuntu 20.04 |
Comments on this entry are closed.
This is correct for EXACTLY the same partition sizes. In the case you want the MBR only on a drive that has a root partition of a different size then issue the same command with a smaller block size.
dd if=/dev/sda of=/dev/sdb bs=446 count=1
Thus preserving the partitioning schema.
Right… be VERY careful with doing this w/ two discs with different size partitions! In fact, the safest way to backup/restore JUST THE MBR:
dd if=/dev/sda of=mbrbackup bs=512 count=1
To restore the MBR (on to the same drive or any drive):
dd if=mbrbackup of=/dev/sdb bs=446 count=1
Caiken is right! BEWARE of using the above dd line on two discs that don’t have IDENTICALLY sized partitions! You will lose data!
Here’s what I do to copy just the MBR from a hdd:
dd if=/dev/sda of=mbrbackup bs=512 count=1
Now to restore the image to any hdd:
dd if=mbrbackup of=/dev/sdb bs=446 count=1
Thanks a lot, this was just the kind of short note I was looking for ,)
MBR is 512 or 446 bytes?
MBR is divided into 3 sections
1. Bootstrap . 446 bytes
2. Partition table. 64 bytes
3. Signature. 2 bytes
Very useful comments about 446 bytes. Thanks!
I am not sure what MBR is until i found this post.
But this is not exactly what i want to do.
I want to copy all the files and directories of a root hard disk with a disk size of 70GB into a external hard drive with a disk capacity of 250GB mounted on /mnt/sda2 .
I can use only cp command as my Debian OS crashed and i want to take immediate backup of all the files.
Is this command useful in any way to do that.
Thanks,
If you can use ‘cp’, then you can use ‘dd’; they’re both required for Posix-compliant systems (such as is Debian).
Also, you cannot make a ‘backup’ after the system has crashed. Backups are made before crashes happen so that Recovery may be performed. What you are attempting to do is called ‘salvage’.
Since this is the first Google result for “linux copy mbr”, please edit original post adding a BIG FAT WARNING about the 512/446 size values.
Thanks
# sfdisk -d /dev/sda > /tmp/sda.bak
# sfdisk /dev/sda nixCraft Dec 31, 2010 @ 15:13
Thanks for the heads up!
Hi .. there are numerous info about this nowadays on all sites…
but one thing i never sure of is ….
SHOULD THIS BE DONE ON MOUNTED OR UNMOUNTED FILESYSTEM .
No sites explain this really…..
It can be done on both mounted and unmouted file system.
I tried this twice to virtualize a physical machine to ESX but each time, on boot, I only have
GRUB _
displayed and no more. I used the 446 bytes size. The partitionning is right and all data have been copied from old to new disk.
I finally startup from a rescue disk, chrooted and used grub-install.
But could grub store data somewhere else ?
(I tried on grub 1 and grub 2 …)
I found myself with the MBR on one drive (sda) (which seems to have packed up), Ubuntu 11.04 install (sdb) on another drive and all I have access to is the the 8.04 live disc. I was unable to therefore use things like grub-install since I couldn’t mount my drives (kep getting unrecoginzed file extensions or some such….)
So this seemed the most practical way of doing things since all I wanted to do was create a new MBR where my 11.04 install is with the info from the packed up drive. But a quick check using Boot Info Script:
shows that core.img is missing from after using dd to replace the MBR on sdb. Mind you I did use 446 since sda is 80Gb and sdb is 160Gb. I assumed I’m dealing with two different sized partitions.
I’d appreciate any insigths…
this is a very good article.
I take the backup of mbr as above mentioned procedure
dd if=/dev/sda of=/tmp/mbrsda.bak bs=512 count=1
How can I restore the mbr(I take the backup of mbrsda.bak file on usb/cd) I case my harddisk craches.
How to decrease mbr size, if it is posible ?
How to increase mbr size, if it is posible ?
I am interested in using dd command to transfer a fully working ( and licensed with OEM key ) XP Home OS on a bootable 10GB Western Digital hard drive to a 16GB flash USB thumb drive. The Western Digital is at /dev/sda and the USB thumb drive is at /dev/sdc ( Ubuntu 10.10 is running on a USB thumb drive at /dev/sdb ). I use the command sudo dd if=/dev/sda of=/dev/sdc bs=64k. I partitioned and formatted the thumb first to full 16GB for NTFS ( I don’t thingk that matters using dd bit for bit image ). All files transferred ok BUT when I try to boot off the new thumb XP Home goes to the safe mode warning menu saying “Windows shut down in an unexpected manner. Do you want to boot normal, safe, command prompt, etc”. Selecting ANY of the boot modes simply shuts down the computer. Any suggestions ?
Источник