как сделать копию диска linux
Создание резервной копии диска при помощи Linux
Создать копию всего диска ≈ прекрасный способ сохранить не только ваши данные, но и саму систему. Цены на переносные USB жесткие диски постоянно снижаются, и весьма полезно иметь парочку для подобных работ. Если ваш основной винчестер испортится, вы сможете заменить его на запасной с копией системы и продолжить работу буквально через несколько минут. Дело только за изготовлением такой копии. Это можно сделать множеством способов, в этой статье мы опишем 3 из них.
Основная проблема при снятии точной копии диска заключается в необходимости загрузиться с другого носителя, чтобы копия была полноценной. Можно загрузиться с LiveCD, либо с загрузочной флешки. Вероятно, у вас где-нибудь хранится установочный диск вашего дистрибутива, можно воспользоваться им. В рамках данной статьи мы будем говорить о дистрибутиве Ubuntu 10.4. Второй способ снять копию жесткого диска ≈ использовать специальный клонирующий дистрибутив Clonezilla. Этот способ хорош для тех, кто еще плохо знает Linux и совсем неуверенно себя чувствует в командной строке. Третий способ позволяет снять копию вашего винчестера из любого дистрибутива Linux при помощи одной простой команды в терминале.
Способ первый: Загрузочный USB носитель с Ubuntu
Как только диск создан, с него можно загружаться. Возможно, вам придется подключить загрузку с USB в BIOS вашего компьютера. На многих новых машинах, нажатием при старте клавиши F12 вызывается загрузочное меню, где указаны все типы загрузочных носителей.
Когда Ubuntu загрузится, можно приступать к созданию копии жесткого диска. Для этого воспользуемся программой GParted, умеющей создавать копии разделов и дисков.
Там же есть и программа Disk Utility, которая содержит множество утилит для работы со всеми дисками в вашей системе. С ее помощью можно примонтировать или отмонтировать диски, отформатировать их. Последнее, кстати, совсем нелишне проделать с тем диском, на котором вы будете создавать резервную копию, особенно если на нем раньше была Windows.
Способ второй: Clonezilla
Clonezilla SE (Server Edition) предназначена для клонирования дисков через сети.
Последняя версия Clonezilla 1.2.5.17 выходит в Debian и Ubuntu вариантах. Доступна теперь и AMD64 версия, имеющая 64-битные версии всех программ и возможность копировать большие разделы. Все приложения обновлены до версии ядра Linux 2.6.32-12. Самое сложное при использовании Clonezilla ≈ не перепутать, какой из дисков является мастером, а какой копией. Clonezilla также обеспечивает копирование Главного Загрузочного Сектора (MBR), чего не делает GParted из Ubuntu Live CD. В последнем случае приходится делать это вручную через командную строку.
Способ третий: Команда dd
Выглядит это в самом общем виде вот так:
В данном примере /dev/sda ≈ это диск, с которого снимается копия, а /dev/sdb ≈ диск на который копируется. Имейте в виду, что dd делает побайтовую копию всего диска, в том числе и загрузочного сектора (MBR). Команда dd позволяет также скопировать диск не на другой диск, а просто в файл, который впоследствии можно поместить на хранение куда угодно, можно записать на DVD, а в случае нужды при помощи той же команды копировать обратно на место:
Скорость при копировании при помощи команды dd в приведенном варианте будет невелика, примерно такая же, как при помощи программы GParted. Дело в том, что по умолчанию dd работает блоками по 512 байт. Но можно в несколько раз повысить эту скорость, применив другой размер блока, скажем 100Мб:
Советую вам прочесть либо ман dd, либо статью про эту команду.
Не важно, каким из трех способов вы воспользуетесь; важно, что у вас будет резервная копия всей системы. Компьютеры время от времени ломаются, и время их поломки всегда самое неудачное. Так что не ленитесь создать клон своего винчестера.
Linuxoid.pro
Сообщество разработчиков программного обеспечения и IT-специалистов
Как клонировать или сделать резервную копию диска Linux с помощью Clonezilla Imaging Tool
Если вы думаете об обновлении компьютера или замене жесткого диска без потери данных, вы можете использовать инструмент CloneZilla для резервного копирования вашего диска Linux. CloneZilla доступен в формате ISO; вы можете скачать и записать ISO-файл на флешку.
CloneZilla предлагает вам сделать резервную копию вашего Linux-диска на локальном диске или передать весь диск через SSH-сервер.
CloneZilla — простой и удобный инструмент для новичков; пользовательский интерфейс в основном основан на графическом интерфейсе; вам не нужно знать никаких сценариев оболочки. Если на вашем диске установлено несколько операционных систем, он может обнаруживать Linux, Windows и другие операционные системы. Clonezilla поддерживает схему разделов как MBR, так и GPT. Он также поддерживает NTFS, EXT4 и другие форматы файлов. Это также может помочь вам восстановить ваш диск после сбоя системы.
Резервное копирование диска Linux с помощью Clonezilla
CloneZilla — это бесплатный инструмент для резервного копирования дисков с открытым исходным кодом, написанный на языке программирования Perl. Имеет лицензию на конфиденциальность GNU. Поскольку нам нужно записать файл ISO на флэш-накопитель, чтобы запустить инструмент CloneZilla, мы будем использовать инструмент Etcher для записи файла ISO. Вы можете включить инструмент Clonezilla из BIOS вашего компьютера и из меню загрузки, выполнив стандартную процедуру загрузки.
Если вы используете виртуальную машину или VMware, вам, вероятно, не нужно записывать ISO; вы можете напрямую установить файл ISO как систему Linux. Однако в этом посте мы увидим, как использовать инструмент CloneZilla для резервного копирования диска Linux.
Шаг 1. Загрузите и запишите ISO-файл CloneZilla
Первым шагом резервного копирования диска Linux с помощью Clonezilla является загрузка файла ISO Clonezilla в вашу файловую систему. Вы можете скачать версию Clonezilla в формате ISO или Zip отсюда. При загрузке файла вы можете выбрать архитектуру процессора и тип файла. Как мы собираемся сделать загрузочный файл, так и загрузим файл ISO.
После завершения загрузки вы можете записать файл ISO с помощью программы записи дисков. Здесь я использую инструмент Balena Etcher для записи ISO-файла Clonezilla. Процесс создания загрузочного ISO-файла практически одинаков для всех программ записи дисков. Сначала вам нужно открыть инструмент, затем ввести файл ISO и выбрать USB-диск. И, наконец, вы можете найти кнопку Flash или Start для записи файла ISO.
После записи ISO ваша флешка будет использоваться в качестве загрузочного носителя. Теперь вы можете перезагрузить вашу систему, чтобы загрузить Clonezilla в вашей системе Linux.
Шаг 2. Загрузите инструмент резервного копирования диска CloneZilla в Linux.
Загрузка CloneZilla в системе Linux проста, понятна и похожа на загрузку другой загрузочной системы Linux. Вам необходимо выполнить процедуру загрузки BIOS, чтобы войти в процесс загрузки. Обычно в большинстве систем для входа в меню BIOS используется либо клавиша ESC, либо клавиша F12. После входа в меню BIOS выберите меню загрузки UEFI и вернитесь в меню загрузки. Теперь вы можете найти свой USB-диск, чтобы запустить инструмент Clonezilla.
После появления экрана загрузки Clonezilla нажмите кнопку ввода, чтобы начать работу с настройками по умолчанию. Затем выберите язык в раскрывающемся меню.
Теперь появится окно «Настроить данные консоли» и попросить вас выбрать раскладку клавиатуры. Вы можете просто нажать клавишу со стрелкой вниз, выбрать «Не трогать раскладку клавиатуры» и нажать кнопку ввода.
Наконец, вы увидите на экране окно «Запустить Clonezilla». Нажмите кнопку ввода, чтобы запустить инструмент резервного копирования файлов Clonezilla в вашей системе Linux. Если вы опытны в написании сценариев оболочки, вы также можете использовать метод оболочки.
Шаг 3. Установка и настройка CloneZilla в Linux
После подготовки CloneZilla вы можете выбрать метод, который хотите использовать для резервного копирования вашего Linux-диска. На картинке ниже вы можете увидеть, что существует несколько методов клонирования диска.
Мы используем метод устройства-устройства для резервного копирования нашего диска Linux с помощью инструмента Clonezilla. Если у вас нет резервного диска или вы хотите отправить образ резервной копии своему клиенту, вы можете выбрать удаленное место назначения и вариант облегченного клиента.
Затем из следующего варианта выберите вариант с диска на локальный диск, чтобы сделать локальную резервную копию вашего диска. Я должен отметить, что все ваши существующие данные на целевом диске будут удалены, поэтому вам следует сделать резервную копию целевого диска.
Теперь на следующем шаге выберите режим для начинающих, чтобы запустить инструмент Clonezilla в вашей системе Linux.
Шаг 4: Исходный и целевой путь для CloneZilla
Clonezilla позволяет вам сделать локальную резервную копию вашего диска Linux и сохранить ее на сервере. В основном мы увидим процесс локального резервного копирования, но мы также узнаем, как настроить Clonezilla для резервного копирования вашего диска на сервере.
Метод 1: резервное копирование локального диска через Clonezilla
После начала работы с Clonezilla выберите исходный диск для клонирования или резервного копирования с помощью инструмента Clonezilla. Он может обнаруживать как HDD, так и SSD. Если в вашей системе установлено несколько дисков, вы можете просто выбрать нужный диск из раскрывающегося меню.
После выбора исходного диска вы можете выбрать целевой диск. Если в вашей системе нет дополнительного диска для целевого диска, вы все равно можете вставить диск в свою систему Linux, и консоль обнаружит ваш диск.
Чтобы сделать резервную копию вашего Linux-диска с помощью инструмента Clonezilla, у вас должен быть диск, равный или больший, чем ваш исходный диск. Clonezilla по-прежнему не позволяет использовать диск меньшего размера для частичного резервного копирования. После выбора целевого диска вы можете нажать кнопку ввода, чтобы продолжить.
В процессе резервного копирования вашего диска Clonezilla предлагает вам проверить вашу файловую систему, содержит ли она какие-либо плохие блоки или нет. Вы можете пропустить этот шаг, если не хотите запускать процесс проверки диска.
Clonezilla также имеет функцию защиты вашего диска с помощью шифрования диска. При необходимости вы можете зашифровать свой диск. Здесь мы пропустим как проверку файловой системы, так и процесс шифрования.
Метод 2: резервное копирование вашего Linux-диска на сервере
Если вам нужно сделать резервную копию вашего Linux-диска на SSH-сервере или в сетевом хранилище, вы можете выбрать адрес своего сервера в качестве целевого диска. Чтобы создать резервную копию диска на сервере, выберите способ подключения. Я рекомендую вам использовать соединение Ethernet через беспроводное соединение. У Clonezilla все еще есть проблемы с беспроводным подключением.
Однако теперь вы можете указать имя файла резервной копии и ввести адрес целевого сервера. Затем нажмите кнопку «ОК», чтобы запустить резервное копирование процесса на сервере.
Шаг 5: Резервное копирование диска Linux с помощью Clonezilla
После настройки исходного диска, целевого диска и других параметров все готово. Clonezilla теперь запросит несколько разрешений и соглашений, чтобы продолжить. Было бы лучше, если бы вы написали Y и каждый раз нажимали кнопку ввода. Поскольку Clonezilla — это инструмент на основе графического пользовательского интерфейса, вам не нужно писать какие-либо сценарии оболочки, но вы можете видеть автоматически сгенерированные команды в оболочке с автоматической прокруткой.
Однако теперь вы можете нажать кнопку Enter, чтобы инициализировать процесс резервного копирования вашего Linux-диска с помощью инструмента Clonezilla. Если все пойдет правильно, вы увидите экран, показывающий процесс резервного копирования. На экране будет отображаться метод разделения диска, размер устройства, свободное пространство и ход выполнения резервного копирования.
Шаг 6. Закройте CloneZilla.
После завершения процесса резервного копирования диска в вашей системе Linux вы можете выбрать, что делать дальше. На изображении ниже вы можете видеть, что есть варианты выключения, перезагрузки и запуска заново. После успешного резервного копирования диска вы можете выключить систему. Вы всегда можете выбрать опцию «Начать заново», чтобы перезапустить весь процесс.
Выводы
Clonezilla — это инструмент для резервного копирования вашего диска, не путайте его с FileZilla; они разные. Clonezilla — отличный инструмент для резервного копирования дисков для Linux и других операционных систем, но было бы лучше, если бы были возможности для сжатия файлов и планирования резервного копирования диска. Во всем посте я показал, как сделать загрузочный диск Clonezilla и сделать резервную копию диска Linux через Clonezilla.
Пожалуйста, поделитесь им со своими друзьями и сообществом Linux, если вы найдете этот пост полезным и информативным. Мы также рекомендуем вам записать свое мнение об этом сообщении в разделе комментариев.
Копирование разделов жёсткого диска средствами GNU/Linux: как обойтись загрузочной флешкой там, где раньше нужен был Акронис
С тех пор как до меня дошла благая весть о существовании операционной системы под названием GNU/Linux, которую используют все настоящие программисты, я несколько раз пытался заменить ей детище Билла Гейтса и несколько раз потерпел неудачу.
Гуру поблизости отсутствовали, доступ к интернету был жёстко ограничен и потому любая нетривиальная задача становилась в те времена совершенно нерешаемой.
Потом, когда появился безлимитный интернет, вследствие чего с получением софта и знаний стало существенно легче, я настроил себе дуал бут и стал осваивать Убунту.
Основные сложности в процессе переезда создались в первую очередь из за необходимости бросить знакомые практически с самого детства программки, которые попросту отсутствуют в операционной системе для настоящих программистов.
В большинстве случаев это было не фатально. Вместо привычного foobar всегда можно послушать музыку на Rhythmbox. Вместо Microsoft Office есть OpenOffice. Да, его совместимость с продуктом корпорации зла порой оставляет желать лучшего, но им вполне можно пользоваться для решения повседневных задач среднестатистического пользователя. Обо всяких Файрфоксах, Операх и Хромах я вообще молчу.
Но в некоторых случаях приходилось перезагружать компьютер, выбирать в меню загрузчика пункт Microsoft Windows и делать всё по старинке. Такой задачей было например снятие образа логического диска в целях переноса на другой физический носитель, потому как текущий уже изрядно поистрепался.
Программой, которая использовалась в таких ситуациях, был Acronis. Интуиция подсказывала, что на выяснение того, как обойтись без него, уйдёт не меньше недели, а результат обычно был нужен край через полчаса, поэтому выяснение откладывалось, откладывалось и откладывалось.
Но после очередной дружеской шутки про никому не нужный и ничего не умеющий, а потому бесплатный Линукс, я решил, что в следующий раз для создания образа диска мне не понадобится ничего, кроме загрузочной флешки и командной строки. И отправился гуглить.
Гугл создавал чёткое впечатление, что как клонировать диски средствами опенсорсных ОС, знает каждая собака. Увы, чёткие инструкции по осуществлению общеизвестных и элементарных вещей найти как правило сложнее всего. Какие-то мануалы в результате упорных поисков в конце концов обнаружились, но всё равно с ними пришлось туговато, ибо их явно писали грамотные люди, которые возятся с темой не первый и даже не второй день, и просто не помнят, что знаниями, почитаемыми ими за необходимый минимум, владеют далеко не все.
Теперь, когда ужасы гугления позади, я понимаю, что всё действительно достаточно просто и хочу оформить результаты своих изысканий в виде краткого руководства по работе с образами дисков в GNU/Linux, обращённого в первую очередь к тем, кто привык к Акронису или другой подобной ему программе. Мне в свое время такой документ бы очень сильно помог, надеюсь, что он поможет и кому-то ещё.
Acronis
В Акронисе всё было просто и понятно: оконный интерфейс, подсказки и предшествующий опыт работы с образами компакт дисков делали процесс несложным. Снял образ, вставил новый винт, развернул образ на него — даже и рассказывать то не о чем. В случае с Линуксом процесс захлебнулся на этапе снятия образа — как это сделать было абсолютно неясно. Специальной программки с подсказками не нашлось, программки, которая добавляла в список устройств виртуальный DVD — наподобие Daemon Tools тоже. Да и сам список устройств оказался достаточно проблематичен, поэтому начать можно прямо с него.
Просмотр перечня накопителей
Просмотр перечня разделов на накопителе
Часто владелец может опознать диск просто по такому перечню (это когда дисков у него не 452), но если этого недостаточно, то можно воспользоваться программой hdparm.
Эту же информацию, но в рассеянном по разным файлам виде, можно найти в директории /sys/block/sda. Например модель диска находится в файле /dev/block/sda/device/model.
Если и этого недостаточно, то остается только по очереди монтировать устройства и смотреть что на них записано. Но это уже совсем другая история.
Снятие образа
Итак, устройство опознано и раздел, с которого нужно снять образ, найден. Теперь собственно процесс.
Общие рекомендации
Образом диска мы обычно называем копию диска на уровне разделов или всего устройства. И если пользователь Windows в ответ на вопрос, как эту копию сделать, обычно слышит рекомендацию воспользоваться специализированным софтом, то в Линуксе всё не так.
Как я уже говорил, здесь каждый диск и каждый раздел диска представлен конкретным файлом. И, так как образ представляет из себя файл с копией диска, логично предположить, что операция снятия образа и операция копирования файла раздела — это одно и то же.
Так оно и есть. Пусть нам надо снять образ раздела /dev/sda2 (на нём Windows 7 обычно держит диск С:) и сохранить его в файл с названием win_c.img.
Для этого достаточно написать cp /dev/sda2 win_c.img. Или cat /dev/sda2 >win_c.img. Короче можно воспользоваться любой программой или комбинацией программ, которая осуществляет копирование файлов.
Правильный способ
Как вы наверное уже догадываетесь, добиться желаемого можно не одним и даже не двумя, остроумными и не очень способами, но правильнее и проще всего на мой взгляд, использовать утилиту ddrescue. Что существенно важно — имеется в виду GNU ddrescue, а не давно уже устаревший оригинал.
Она, также как и cp, занимается копированием файлов, но в случае нахождения ошибок, ddrescue не прервёт работу с радостным сообщением о том, что пациент скорее мёртв, чем жив, а запомнит место с ошибкой, чтобы вернуться к нему позже и попробовать прочитать заново. Теперь уже медленно и нежно.
Используется ddrescue следующим образом:
ddrescue
ddrescue не способна принимать входные данные с конвейра, или передавать на конвейр результат работы, что впрочем неудивительно. Возможность пропускать места с ошибками при первой итерации и возвращение к ним в последующих циклах подразумевает наличие файлов на выходе и входе.
Команда, которая выполнит операцию, аналогичную описанной выше, будет выглядеть так:
ddrescue /dev/sda2 win_c.img win_c.img.log
Кстати, в данный момент я молчаливо подразумеваю, что жёсткий диск, с которого мы снимаем копию более-менее исправен и фокусов не выкидывает. Если с диском есть серьёзные проблемы, то лучше предварительно ознакомиться с подробностями использования ddrescue, например тут. и применить эти знания при снятии образа.
Неправильный способ
Часто можно встретить рекомендации использовать для копирования файла устройства или раздела программу под названием dd. Как правило, для снятия образа предлагается сделать что-то вот такое:
dd if=/dev/sda2 of=win_c.img
Не делайте так! Хотя семантически подход верен (произойдёт копирование одного файла в другой), последствия могут быть очень печальны. Да, dd превосходит cp в том отношении, что при обнаружении ошибки cp прекратит работу, а dd не прекратит, но если на диске есть битые или просто плохо читаемые сектора, то dd будет продолжать попытки считать их содержимое пока из винчестера не повалит дым.
Да, у dd есть аргумент noerror, но при его использовании копирование может быть выполнено с ошибками, попыток восстановления которых предпринято не будет. ddrescue в аналогичной ситуации после первого прохода вернётся к пропущенным местам и попробует прочитать их маленькими кусочками. И оставит лог файл, с помощью которого можно будет продолжать попытки вычитать сбойные места в будущем.
Короче, используйте ddrescue. А если кроме dd ничего нет, не забывайте про аргумент noerror.
Описанная выше процедура может применяться например для того, чтобы сохранить образ диска с только что установленной операционной системой для последующего восстановления. Да, настоящий линуксоид так поступать не станет, но среди пользователей операционной системы с другим названием это достаточно распространённая практика. И для периодического вдумчивого ремонта регулярно ломающегося компьютера какой нибудь симпатичной девушки её смело могут применять даже любители пингвинов. А если девушек больше некоторого, сугубо индивидуального для каждого самоделкина, количества, то данный метод просто незаменим. Главное не перепутать названия файлов с образами.
Просмотр содержимого образа раздела (логического диска)
Так как каждый раздел диска представлен файлом, можно предположить, что должен существовать штатный способ подключения файлов с образами к файловой системе. С определённой точки зрения так оно и есть. Конкретно для этого используется утилита mount, с помощью которой можно поместить дерево файлов, содержащееся в образе, в любую директорию на ваш выбор. Этот процесс называется монтированием.
Вот так можно убедиться, что образ, который вы собираетесь накатить на винчестер очередного розового ноутбука, является образом именного того диска C: который ожидается увидеть на данной конкретной машине. Ну, или можно просто скопировать с него файлы без которых никак нельзя обойтись и отправить этот образ во внешнюю тьму. А на ноутбук поставить последнюю Убунту или Федору.
But we can go deeper.
Просмотр содержимого образа физического диска
Файлы виртуальных устройств создаются заранее (на этапе загрузки системы) и имеют названия loop0, loop1, loop2 и так далее по нарастающей.
Связать образ раздела с одним из этих файлов можно командой losetup. Команда mount из предыдущего раздела на самом деле эквивалентна следующим двум командам.
losetup /dev/loop0 win_c.img
mount /dev/loop0 /mnt/win_c
Но вот для того, чтобы посмотреть содержимое образа в котором есть несколько разделов, этого недостаточно. Дело в том, что если выполнить команду losetup для такого файла, то с устройством /dev/loop0 будет связан весь образ целиком. То есть это устройство будет эквивалентом /dev/sda, а нам нужны эквиваленты /dev/sda1 и /dev/sda2.
Обладатели свежих версий программы losetup (читай гентушники и арчеводы) могут выполнить losetup c аргументом —partscan, что приведёт к автоматическому созданию в директории /dev файлов, соответствующих разделам образа. То есть /dev/loop0p1, /dev/loop0p2 и так далее до самого горизонта. И вот уже эти файлы можно отдавать команде mount.
Те же, кому не так повезло с дистрибутивом, могут воспользоваться программой kpartx, которая сделает то же самое, но положит файлы соотвествующие разделaм не в директорию /dev, а в директорию /dev/mapper, откуда их можно монтировать и просматривать.
But we can go even deeper than that…
Автоматическое создание файлов разделов при выполнении команды losetup
Вообще-то ядро (а конкретно модуль loop) уже достаточно давно умеет искать в файле образа таблицу разделов и создавать соответствующие файлы, но по умолчанию эта функция отключена.
Включается она если параметр модуля loop max_part не равен нулю. Задать этот параметр можно только при загрузке модуля, поэтому если система уже запущена, модуль надо выгрузить из памяти и загрузить снова с уже заданным параметром. Для этого нужно выполнить следующие две команды.
Однако в некоторых дистрибутивах (напривер в Убунте) модуль loop вкомпилирован в ядро намертво и поэтому для установки параметра придётся вписать loop.max_part=63 в командную строку ядра и перезагрузить систему.
Развёртывание образа на физический носитель
А теперь о том, как собственно накатить образ на другой диск. Как и раньше надо руководствоваться тем, что диски и разделы представлены в виде файлов. И если для снятия образа нужно было создать копию файла устройства или раздела, то для того, чтобы закатать этот образ обратно надо провести операцию копирования в обратную сторону. То есть вместо cp /dev/sda2 win_c.img написать cp win_c.img /dev/sda2. Ну и лучше помнить о советах, изложенных в руководстве по снятию образа. А именно пользоваться ddrescue и не пользоваться dd.
Сжатие образа раздела (логического диска)
Особенно приятной чертой Акрониса является способность не писать в файл образа куски диска или раздела, которые не содержат файлов. Это позволяет ужать образ до реального объёма данных в разделе или на диске.
Изложенный ранее подход имеет принципиальные ограничения, не позволяющие реализовать такую фичу — программы посекторного копирования ничего не знают про структуру файловых систем и даже более того — не знают, что это вообще такое — файловая система.
Однако выход из положения есть. Правда для его использования файловая система, на которой будет храниться образ, должна поддерживать такую специфическую штуку, как sparse файлы.
Sparse файлы
Sparse файл это файл, в котором куски, содержащие нули, на диск не пишутся. То есть, если половина файла заполнена данными, а другая половина нулями — на диск будет записана только половина этого файла и ещё дополнительная информация об областях файла, заполненных нулями. Если область с нулями непрерывна и начинается в середине, то реально на диске файл будет заменять половину от своего теоретического объёма.
Подготовка раздела или устройства к сжатию
Для того, чтобы воспользоваться этой возможностью в целях сжатия образа, нужно перед снятием записать в свободное место нули. Сделать это несложно — достаточно смонтировать файловую систему в директорию и создать в этой директории файл с бинарными нулями размер которого будет равен размеру свободного места на разделе.
Но выяснять количество свободного места и передавать его программе, создающей файл, к счастью не обязательно, да и искать программу, создающую файл с нулями, не понадобится. В директории /dev есть безразмерный файл zero, который, как нетрудно догадаться по названию, является неисчерпаемым источником бинарных нулей. Остаётся только скопировать его в нужное место.
Так как файл безразмерен, копирование будет продолжаться до тех пор, пока копия не заполнит всё доступное ей пространство, то есть все свободное место в разделе, что нам собственно и требовалось.
Про то, как копировать файлы стандартными средствами операцинной системы, здесь написано столько раз, что руководство вполне могло бы называться «Искусство копирования файлов в окружении GNU», но так как истина от повторения не тукснеет, я, пожалуй, напишу ещё раз.
Для создания файла с бинарными нулями можно выполнить команду cp /dev/zero zerofile или cat /dev/zero > zerofile.
Создание sparse файла образа устройства или раздела
Большинство утилит для работы с файлами знают о существовании sparse файлов и умеют их создавать. Упомянутой ранее ddrescue, для того, чтобы образ оказался sparse файлом нужно передать ключ —sparse. Теперь результирующий файл будет занимать столько места, сколько ему необходимо, и не больше.
Как быть в случае сжатия образа повреждённого диска
Как известно, многие диски и в руки то брать страшно, какой уж может быть разговор о записывании туда многогигабайтных файлов. Если вам в руки попался именно такой диск, следует сначала снять образ, а потом уже сделать из него sparse файл. Для этого нужно смонтировать полученный образ, потом заполнить свободное место нулями и сделать с образа копию, которая уже будет полноценным sparse файлом. Исходный образ после этого можно удалить.
Конечно, для проведения этих операций потребуется много свободного пространства, но так всё-таки значительно лучше, чем вообще никак.
Заключение
А теперь в сжатом виде о том, что можно почерпнуть из данного руководства.