Когда приходит время стереть, создать резервную копию или восстановить данные в Linux, вы можете выбрать несколько приложений. GParted — один из самых проверенных вариантов. GNOME Disks — более современная альтернатива, которая отлично смотрится в среде рабочего стола GNOME. Но независимо от того, какую операционную систему Linux вы используете, есть один вариант, который всегда работает — dd.
Вы можете использовать Linux без погружения в терминал. Но если вы добавите некоторые команды в свой репертуар, вы не только сэкономите время, но и приобретете навыки, которые сможете использовать в любой версии Linux.
Зачем использовать dd?
Независимо от того, работаете ли вы на настольном компьютере или на сервере, dd просто работает. dd начинался как команда Unix, поэтому, помимо Linux, он поддерживает другие Unix-подобные операционные системы, такие как FreeBSD и macOS.
Кроме того, dd занимает считанные секунды, чтобы инициировать стирание или создать образ диска. Если вы знаете, что вводить, вы можете открыть терминал и стереть диск за время, необходимое для поиска инструкций в Интернете.
С большой силой приходит большая ответственность. Команда для клонирования диска не так уж сильно отличается от команды для стирания диска. При работе с командами, которые могут удалять файлы, необходимо уделять повышенное внимание тому, что вы вводите.
Вы нервничаете? Хорошо. Даже когда вы станете экспертом по dd, всегда нужно вводить команды аккуратно. Невнимательность может, в худшем случае, испортить оборудование, а в более вероятном — привести к потере данных. Итак, давайте приступим.
Клонирование диска с помощью dd
Клонирование диска — это надежный способ создания резервной копии компьютера. Вы можете сделать резервную копию данных на переносной жесткий диск или в Dropbox, но это сохранит только ваши файлы.
Чтобы сохранить приложения, необходимо научиться создавать резервные копии каждого отдельного приложения. Для некоторых из них это означает экспорт определенного файла. Для других это означает копирование скрытой папки. Есть и такие приложения, резервное копирование которых вообще невозможно.
dd обходит эту проблему, создавая точную копию всего жесткого диска или раздела. Когда вы восстанавливаете эту копию, вы возвращаете свой компьютер к тому состоянию, в котором он был. Вы получите назад свои файлы, приложения, историю просмотров и даже системные настройки. Все что у вас было.
Для клонирования диска вам понадобится второй диск, который имеет больше места, чем тот, который вы копируете. Скорее всего, это будет переносной жесткий диск или большая флешка.
Начните с открытия терминала. Для выполнения любых команд dd вам понадобятся права администратора. Вы можете ввести su для входа в систему от имени администратора или ввести sudo в начале команды dd.
Когда вы будете готовы к копированию, введите команду ниже. Обратите внимание, что при этом будут удалены все существующие данные на втором диске, поэтому не забудьте предварительно создать резервную копию.
dd if=/dev/sdX of=/dev/sdY
Теперь давайте разберемся, что происходит. dd — это команда. if — это вход, то есть место, которое вы хотите скопировать. of — это выход или место, которое вы заменяете своей копией.
sdX и sdY означают диски, с которыми вы взаимодействуете. Дискам часто присваивается имя, например /dev/sda, /dev/sdb или /dev/sdc. Имена можно узнать с помощью редактора разделов. Или, поскольку вы уже находитесь в терминале, вы можете использовать команду lsblk.
Создание образа диска
Еще один способ клонирования диска — создание образа диска, который можно перемещать и восстанавливать, как это делается с загрузочного USB.
Создание файлов образов позволяет сохранять несколько резервных копий в одном месте, например, на большом переносном жестком диске. Опять же, для этого процесса требуется всего одна команда:
dd if=/dev/sdX of=path/to/your-backup.img
Чтобы сэкономить место, можно попросить dd сжать резервную копию.
dd if=/dev/sdX | gzip -c > path/to/your-backup.img.gz
Эта команда сжимает вашу резервную копию в файл IMG.GZ, один из многих форматов сжатия, с которыми может работать Linux.
Восстановление диска с помощью dd
Какой толк от резервных копий, если вы не можете их использовать? Когда вы готовы восстановить образ с помощью dd, у вас есть два варианта. Если вы использовали первый способ, просто поменяйте местами два места назначения.
dd if=/dev/sdY of=/dev/sdX
При восстановлении из файла образа применяется та же концепция:
dd if=path/to/your-backup.img of=/dev/sdX
Если ваш файл образа сжат, то все происходит немного иначе. Вместо этого используйте эту команду:
gunzip -c /path/to/your-backup.img.gz | dd of=/dev/sdX
Чтобы было понятно, gunzip — это «g unzip», то есть противоположность «g zip». Эта команда распаковывает вашу резервную копию. Затем dd заменяет существующий диск этим образом.
Параметры для рассмотрения
Вы можете изменить команду, добавив в конец параметр. По умолчанию dd может занять некоторое время для передачи данных. Вы можете ускорить процесс, увеличив размер блока. Для этого добавьте bs= в конце.
dd if=/dev/sdX of=/dev/sdY bs=64
Этот пример увеличивает размер блока по умолчанию с 512 байт до 64 килобайт.
conv=noerror указывает dd продолжать работу, несмотря на возникающие ошибки. По умолчанию dd остановится, что приведет к созданию неполного файла. Помните, что игнорирование ошибок не всегда безопасно. Результирующий файл может быть поврежден.
conv=sync добавляет входные блоки с нулями при любых ошибках чтения. Таким образом, смещения данных остаются синхронизированными.
При желании вы можете объединить эти две последние функции как conv=noerror,sync. После запятой пробел не ставится.
Знакомство с dd
Если вам интересно, название dd относится к выражению в языке управления заданиями IBM. Если вы не понимаете, что там происходит, не парьтесь. Это не делает команду сложнее в использовании.
Нужна дополнительная информация по работе с dd? Вики-страница довольно подробна. Также есть отличная статья на вики Arch Linux. Опять же, неважно, используете ли вы Arch или нет. dd работает одинаково независимо от операционной системы Linux.