Восемь лучших программ с открытым исходным кодом для клонирования / резервного копирования дисков на серверах Linux
Клонирование дисков представляет собой процесс копирования данных с одного жесткого диска на другой. На самом деле вы можете выполнить этот процесс с помощью операции копирования и вставки (copy & paste), но вы не сможете скопировать скрытые файлы и каталоги или файлы, которые в текущий момент используются, поэтому вам нужна программа клонирования, которая сделает эту работу. Также вам, возможно, потребуется отдельный процесс клонирования, который выполнит сохранение резервного образа ваших файлов и каталогов.
Работа программы клонирования состоит в том, чтобы взять все данные на диске, конвертировать их в один файл .img и предоставить его вам с тем, чтобы вы могли скопировать его на другой жесткий диск. В нашей статье мы рассказываем о восьми лучших программ клонирования, имеющих открытый исходный код, которые сделают за вас эту работу.
1. Clonezilla
Clonezilla представляет собой Live CD, созданный на основе Ubuntu и Debian и выпущенный под лицензией GPL 3. С его помощью можно клонировать все ваши данные на жестком диске или делать резервные копии; он похож на Norton Ghost для Windows, но более эффективный.
Возможности
Clonezilla для Linux
2. Redo Backup
Redo Bakcup также представляет собой инструмент Live CD для простого клонирования вашего дисков; Redo Backup является бесплатной «живой» системой с открытым исходным кодом, выпущенной под лицензией GPL 3, Как указано на сайте этого приложения, оно обладает следующими возможностями:
3. Mondo Rescue
В отличие от других программ клонирования, программа Mondo не конвертирует ваши жесткие диски в файл .img; поскольку она конвертирует их в образ .iso, то вы можете также создать свой собственный Live CD с Mondo — используйте для этого инструментальное средство mindi, разработанное для Mondo Rescue для клонирования данных с Live CD.
Программа поддерживает работу в большинстве дистрибутивов Linux, она также поддерживается в FreeBSD, причем под лицензией GPL. Вы можете установить Mondo Rescue, воспользовавшись следующей ссылкой.
4. Partimage
Пакет Partimage является программой резервного копирования с открытым исходным кодом; по умолчанию она работает по системе Linux и в большинстве дистрибутивов Linux доступна для установки из менеджера пакетов. Если у вас нет установленной системы Linux, то можно использовать диск «SystemRescueCd», являющийся «живым» диском Live CD, в состав которого по умолчанию входит пакет Partimage, позволяющий выполнить необходимый вам процесс клонирования.
Пакет Partimage выполняет клонирование очень быстро, но проблема в том, что в нем не поддерживается работа с разделами ext4 или btrfs, но вы можете пользоваться им для клонирования других файловых систем, например, ext3 и NTFS.
5. FSArchiver
Возможности
6. Partclone
Partclone это бесплатный инструмент для клонирования и восстановления разделов, написанный на языке С и впервые появившийся в 2007 году. Он поддерживает множество файловых систем, например, ext2, ext3, ext4, xfs, nfs, reiserfs, reiser4, hfs+, btrfs и очень прост в использовании.
Распространяемый по лицензии GPL, он также доступен в качестве инструментального средства в Clonezilla; также вы можете скачать его в виде отдельного пакета.
7. G4L
G4L является свободной «живой» системой на CD, с помощью которой легко клонировать жесткий диск; ее главная особенность в том, что вы можете сжать файловую систему и отправить ее по FTP, CIFS, SSHFS или NFS в любое место, куда вы захотите; система, начиная с версии 0.41, поддерживает работу с разделами GPT, лицензируется в соответствие с лицензией BSD и доступна бесплатно для скачивания.
8. doClone
Пакет doClone также является бесплатным программным проектом, который был разработан для простого клонирования системных разделов Linux; он написан на языке C++, поддерживает до 12 различных файловых систем, может выполнять восстановления загрузчика Grub и может по сети передавать образ клона на другие компьютеры; doClone также позволяет выполнять «живое» клонирование, что означает, что вы можете создать клон системы, даже если система работает.
Есть много других инструментальных средств, предназначенных для клонирования ваших жестких дисков в системе Linux. Пользуетесь ли вы, когда выполняете резервное копирование ваших жестких дисков, какой-нибудь из систем клонирования из приведенного выше списка? Какая из них больше подходит для вас? А также сообщите нам, если есть какие-нибудь другие инструменты, о которых вы знаете и которые отсутствуют в списке.
🙇♂️ Как клонировать раздел диска Linux по сети, используя dd
В этом уроке мы покажем вам, как клонировать раздел жесткого диска Linux по сети, в этом уроке мы будем использовать команду dd.
Для парней, которые не знают, что такое dd – это утилита командной строки для Unix и Unix-подобных операционных систем, основной целью которой является преобразование и копирование файлов.
Клонирование жесткого диска Linux имеет преимущества, потому что нам не нужно переустанавливать и заново настраивать приложения, особенно в Linux, которые мы использовали в качестве сервера.
Предпосылки
В этой статье предполагается, что у вас есть хотя бы базовые знания Linux, вы знаете, как использовать оболочку, учетную запись пользователя root или пользователя без полномочий root с привилегиями sudo, установленными на вашем сервере.
О других предпосылках:
Мы будем использовать следующее описание для нашего примера:
Источник
Место назначения
Предупреждение: убедитесь, что все команды, показанные ниже выполняются под операционной системой вашей восстановительной ОС.
1. Клонировать раздел диска, используя dd через SSH
Попробуем клонировать весь раздел диска Linux с помощью dd через ssh с сервера A на сервер B.
Предположим, вы используете пользователя root.
Выполните эту команду на сервере A (источник):
Если вы хотите клонировать только какой-то определенный раздел, просто выберите раздел, который вы хотите клонировать, как показано ниже, например, мы будем клонировать раздел /dev/sda3.
Запустите эту команду на сервере A (источник):
2. Клонировать раздел диска, используя dd через telnet со сжатием bzip
Клонирование с использованием telnet и bzip имеет преимущества, позволяющие сократить время клонирования, но убедитесь, что вы используете безопасную сеть.
Предположим, что сервер-B имеет IP-адрес 192.168.100.2.
Запустите эту команду на сервере B (пункт назначения):
Запустите эту команду на сервере A (источник):
Основываясь на этих 2 командах выше, мы подключимся к серверу-B через порт 19000.
Заключение
Вы можете выбрать оба способа, описанных выше.
Клонирование разделов диска по сети полезно, когда вам нужно выполнить миграцию из другого центра обработки данных с таким же местом на диске.
Клонировать работающий сервер Linux
Мне нужно клонировать работающий сервер Linux. Мы не можем выключить рабочий сервер. Есть ли способ получить клон и развернуть его на другом сервере?
Есть много способов скопировать диски, файловые системы или файлы. Как правило, копирование файловой системы дает вам хороший клон с гибкостью, которая может быть немного другого размера в целевой системе. Когда целевая система работает под управлением какого-либо живого Linux (knoppix, ubuntu live и т. Д.), Загруженного с компакт-диска, вы можете создавать разделы на диске, используя fdisk или ваше любимое приложение для работы с разделами. Предполагая, что у вас SSH-сервер работает в исходной системе, используйте подход, подобный следующему:
Волшебство происходит в этой команде:
Для postgresql есть:
Если вы столкнулись с какой-либо постоянной ошибкой в новой системе, восстановите базу данных. В качестве альтернативы, как только вы отключите службы в исходной системе, снова выполните дамп БД и восстановите его в целевой системе, и вы не пропустите какие-либо недавно измененные данные.
Создайте расположение дисков на новой машине так, как вы этого хотите.
Используйте rsync для переноса содержимого диска. Повторите несколько раз, чтобы наверстать упущенное.
На новой машине поэкспериментируйте с тем, что вам нужно будет сделать дополнительно для правильной загрузки. Grub, например, и приведёт его в согласованное состояние.
Пока вы не сможете выключить старую машину, регулярно выполняйте rsync, чтобы новый диск был близок к старому.
Затем переведите старый в режим обслуживания, снова выполните rsync и загрузите новый, который должен работать, как старый.
Мой коллега клянется System Imager:
Я не знаю, насколько хорошо это будет работать для «живых» систем.
В противном случае я думаю, что вы застряли, делая вещи вручную:
Если вы можете привести свои базы данных в согласованное состояние на диске, вы можете просто использовать DAR, чтобы сделать копию всего, а затем записать его обратно на новый сервер.
Синхронизация ваших баз данных в согласованном состоянии на диске может быть сложной, но может просто сработать моментальный снимок, а затем восстановить его после восстановления образа DAR. DAR повлияет на производительность сервера во время его работы.
Однако, получив изображение, вы можете настроить параметры сети и без проблем восстановить его.
Клонирование системного раздела в Linux
В данной инструкции я попробую рассмотреть различные сценарии, с которыми мы можем столкнуться при клонировании диска в Linux с системным разделом. В итоге мы должны будем запустить нашу систему с другого диска.
Данная процедура потенциально опасна для данных. Любое неверное действие или нюанс, связанный с уникальной настройкой, могут привести к потере данных. Обязательно, выполняем резервное копирование всех важных файлов. Также я рекомендую потренироваться в тестовой среде.
В зависимости от системы и типа разделов, действия могут отличаться, а могут появляться особенности, которые сделают работу сложнее. Клонирование диска может быть выполнено в несколько действий, а может превратиться в кошмар. Запасаемся временем и терпением.
Процесс будет выполнен в несколько шагов:
1. Клонирование диска
Первым делом мы создаем полную копию нашего диска. Это единственный этап, который может быть выполнен без нюансов на любой из систем, так как он выполняется с помощью утилиты dd.
Смотрим состояние дисков и разделов на текущий момент:
Определяемся, с какого диска на какой мы будем выполнять копию. Это может прозвучать банально, но тут важно не перепутать источник диска, с которого клонируется информация и целевой носитель.
dd if=/dev/sdx1 of=/dev/sdy1 bs=64K conv=noerror,sync
* Команда выполняет блочное копирование и запускается со следующими параметрами:
* Таким образом, мы клонируем диск или раздел с /dev/sdx1 в /dev/sdy1 (не путаем источник и назначение).
Команда будет выполняться некоторое время. После ее завершения можно снова посмотреть состояние дисков и разделов:
При клонировании диска мы должны увидеть, что целевой носитель приобрел такую же разметку.
Следующим шагом настроим загрузчик.
2. Загрузчик grub2
Для большинства современных систем характерно использование grub2. Его мы и будем рассматривать. Но если в вашем случае используется сервер с grub первой версии, то мы можем обратиться к инструкции How to Migrate the Root Filesystem to a New Disk.
Мы можем увидеть разные варианты строки, указывающей на загрузку системы.
а) В некоторых случаях это будет универсальная строка, которую не нужно менять, например:
GRUB_CMDLINE_LINUX=»crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet»
* в данной строке мы видим, что загрузчик будет искать том LVM centos/root. Так как после клонирования он не поменяется, то нам ничего не нужно редактировать.
б) В некоторых случаях строка может быть пустой:
* в данном примере также от нас не потребуется никаких действий.
в) В некоторых случаях указатель может вести на конкретные диски:
splash=silent quiet showopts»
Тогда нам понадобиться изменить строки, чтобы диск соответствовал новому.
Также стоит иметь ввиду, что если после копирования мы собираемся извлечь диск из компьютера, порядок дисков и имя могут поменяться, что приведет к неработоспособности загрузки.
Стоит сделать тестовое отключение с целью проверки, какое имя станет у диска.
3. Файл fstab
На следующем шаге мы проверяем настройки монтирования корневой директории и раздела boot при загрузке системы. Они задаются в файле fstab.
Есть два надежных способа указать диск при монтировании — использовать его идентификатор или точку монтирования тома LVM. Рассмотрим оба варианта.
Данный способ можно использовать частично, так как раздел boot не может использовать LVM, поэтому данное монтирование будет применяться только к корневому разделу.
Если мы используем LVM, то все, что нам нужно сделать, это открыть файл fstab и проверить, что в нем, на самом деле, используется LVM при монтировании корневого раздела:
Мы можем увидеть что-то на подобие:
.
/dev/mapper/centos-root / xfs defaults 0 0
.
Понять, используется ли LVM можно командой:
Мы должны увидеть пометку lvm:
.
centos-root 253:0 0 13.4G 0 lvm /
.
Как было сказано выше, в случае использования LVM, нам не придется редактировать fstab, так как точка монтирования не поменяется.
Использование идентификатора
Для получения списка дисков с их идентификаторами, вводим команду:
Мы получим что-то на подобие:
/dev/sdb1: UUID=»45053cf4-cb27-40b8-9b63-7f43fb123807″ TYPE=»xfs»
/dev/sdb2: UUID=»Rzg9IW-5zmy-wsdv-mfIJ-HMRV-9Zup-XCcxPi» TYPE=»LVM2_member»
/dev/sda1: UUID=»45053cf4-cb27-40b8-9b63-7f43fb123807″ TYPE=»xfs»
/dev/sda2: UUID=»Rzg9IW-5zmy-wsdv-mfIJ-HMRV-9Zup-XCcxPi» TYPE=»LVM2_member»
/dev/mapper/centos-root: UUID=»97ea6561-8e69-4a9d-b29b-5d6c68a5df64″ TYPE=»xfs»
/dev/mapper/centos-swap: UUID=»db800e72-c138-4050-9949-cf03b779b709″ TYPE=»swap»
* как видим, идентификаторы дисков совпадают, так как команды dd клонирует информацию полностью. Также обратите внимание, что разделы LVM также имеют свои идентификаторы. Это очень важный момент, так как точка монтирования в случае использования LVM должна указывать на него.
Чтобы лучше понять, какой идентификатор нам нужен, смотрим список раздело и их монтирования:
Находим раздел, который соответствует корневому и смотрим его идентификатор. После открываем файл:
Наши записи могут быть, примерно, такими:
UUID=Rzg9IW-5zmy-wsdv-mfIJ-HMRV-9Zup-XCcxPi / xfs defaults 0 0
UUID=45053cf4-cb27-40b8-9b63-7f43fb123807 /boot xfs defaults 0 0
Но также никто нам не запретит использовать гибридный вариант, например:
/dev/mapper/centos-root / xfs defaults 0 0
UUID=45053cf4-cb27-40b8-9b63-7f43fb123807 /boot xfs defaults 0 0
* в данном варианте мы используем том LVM для корня и идентификатор для boot.
Буква (цифра) раздела
Также мы можем использовать монтирование при указании конкретного диска и раздела, например:
/dev/sda2 / xfs defaults 0 0
/dev/sda1 /boot xfs defaults 0 0
Данный метод ненадежный, так как при извлечении дисков или их переключении в другие порты, имена разделов могут поменяться.
4. Перезагрузка
Надеемся, что мы все сделали правильно и перезагружаемся. На данном этапе также могут быть варианты.
а) Если необходимо извлечь старый диск, то выключаем компьютер, отключаем диск, но не убираем его далеко, так как если система не загрузится, необходимо будет его вернуть, подключив в тот же порт материнской платы.
б) Если мы сохранили оба диска, нам нужно убедиться в настройках БИОС/UEFI, что загрузка выполняется с нового диска.
Если мы настроили систему правильно, то она загрузится с нового диска.
Клонирование настроенной операционной системы при помощи Clonezilla
Как говорится хороший системный администратор — это ленивый системный администратор. Для любого сисадмина не проблема установить и настроить систему на одном компьютере, проблема начинается тогда, когда таких компьютеров более 10. И на каждом нужно сделать одно и то же. Но как известно лень — двигатель прогресса и на помощь к нам приходит Clonezilla.
Итак задача: размножить уже настроенную операционную систему со всем необходимым софтом на N-ое количество машин.
Процедура проводится в два этапа:
I. Подготовка образа и сохранение его на сервере.
II. Копирование сохраненного образа с сервера на новую машину.
I. Подготовка образа и сохранение его на сервере.
1. Подготовим систему для клонирования, т.е. установим операционную систему, весь необходимый софт, выполним типовые настройки по максимуму, чтобы после клонирования максимально быстро донастроить систему и ввести в эксплуатацию компьютер (Для этой цели можно воспользоваться VirtualBox). Я проделаю это на примере Debian (хотя у себя мы, активно, создаем копии Windows и Linux).
2. Скачиваем образ последней версии Clonezilla и записываем его на диск или флешку. Перезагружаем компьютер и загружаемся с нашего носителя и выбираем пункт Clonezilla live (Default settings, VGA 800×600)
3. Выбираем язык системы:
4. Оставляем раскладку клавиатуры по умолчанию:
5. Запускаем систему Clonezilla:
6. Выбираем пункт: device-image работать с дисками или разделами, используя образы:
7. Теперь нужно указать где мы будем хранить нашу копию. Так как у меня сервера на Linux, то я выбираю пункт ssh-server Использовать SSH сервер. На сервере нужно подготовить директорию для хранения образов копий систем.
8. Так как мы будем передавать данные по сети, система запросит произвести сетевые настройки для Clonezilla. Так как у меня в сети работает сервер DHCP — то мне не нужно задавать настройки вручную:
9. Указываем имя или ip сервера, на котором мы будем хранить копию: 10. Указываем порт подключения, у нас он стандартный — 22:
11. Указываем имя пользователя, под которым будем подключаться к серверу по протоколу ssh (в моем случае это school):
12. Указываем точный путь до каталога на сервере, где мы будем хранить копии:
13. Осталось ввести пароль пользователя (в нашем случае это school) для подключения к серверу по ssh-протоколу:
14. Если мы все сделали правильно, то произойдет подключение к серверу и нам нужно будет нажать Enter:
16. Выбираем уровень настроек Beginner — начальный уровень настроек:
17. На следующем этапе выбираем первый пункт — savedisk Сохранить локальный диск как образ:
18. Указываем имя сохраняемого образа:
19. Указываем какой именно диск мы будем сохранять:
20. Выбираем уровень проверки образа, обычно все проходит без ошибок, поэтому, для экономии времени, выбираем первый пункт:
21. Далее нажимаем Enter и соглашаемся с системой (yes):
22. И наблюдаем за процессом снятия образа с нашей системы:
23. После окончания процесса снятия образа и сохранения его на сервере перезагружаем систему или выключаем компьютер:
II. Копирование сохраненного образа с сервера на новую машину.
При восстановлении готового образа на новую машину пункты с 1 по 16 абсолютно совпадают с пунктом «I. Подготовка образа и сохранение его на сервере«.
1. При достижении пункта 16 выбираем пункт restoredisk Восстановить образ на локальный диск:
2. Выбираем образ нужной системы:
3. Выбираем диск, на который будет происходит запись. желательно его подготовить на компьютере и отформатировать.
4. Соглашаемся с предупреждениями:
5. Наблюдаем процедуру копирования образа на локальный диск нового компьютера:
6. Перезагружаем Clonezilla:
7. Загружаем клонированную систему на новом компьютере и производим необходимые настройки.
Производим действия, описанные в пункте «II. Копирование сохраненного образа с сервера на новую машину» на каждой и N-ого количества машин.