Резервное копирование только файловой системы SD-карты в файл образа

Резервное копирование только файловой системы SD-карты в файл образа

EDIT: По какой-то причине сохранилась только часть моего поста. Я обновил его сейчас до полного содержания


Хотя эта тема вращается вокруг Raspberry Pi, она применима практически ко всем SD-картам, имеющим следующую настройку: файловая система занимает лишь часть общего размера карты. Короче говоря, смысл этого вопроса в том, чтобы понять, как писатьТОЛЬКОFS (или больше, если есть несколько разделов) в резервный образ. Более подробную информацию можно увидеть ниже.

Когда я начал играться с Pi после того, как купил его в декабре прошлого года, у меня было несколько повреждений SD-карты, и я потерял ее содержимое. Это произошло из-за неправильного выключения питания вместо обычного выключения, так что ничего страшного. Поскольку каждый раз мне приходилось форматировать карту, записывать на нее образ Raspbian, вставлять его в Pi, загружать плату, расширять файловую систему, переустанавливать и перенастраивать все, я начал искать лучшие решения:

  • изменение размера изображения и ФС на немдозаписываю на SD карту -этотссылка прекрасно иллюстрирует, как увеличить изображение (используя ddи /dev/zeroв качестве входного источника) и настроить ext4(я думаю, это EXT4 для Raspbian (исключая небольшой раздел FAT32 для загрузочных компонентов)). Это решает проблему использованиярасширить файловую системуособенность инструмента конфигурации Raspberry, которая в основном съедает остаток неформатированного пространства, будь то 2 ГБ, 4 ГБ, 16 ГБ, 32 ГБ и т. д. Конечно, увеличение образа также увеличивает время, ddнеобходимое для его записи на SD-карту, однако это также позволяет сделать следующий шаг настройки, а именно
  • настройка установленного программного обеспечения - с помощью chrootили proot(плюс qemu) возможно (как видноздесьиздесь) для установки/собирания всего, что вы хотите, если вы правильно смонтируете FS Raspbian и chrootв нем. Это также важный шаг для многих сборок, требующих кросс-компиляции (например, Qt для Pi) - вы можете скомпилировать все нативно на Pi, но это займет много места и времени.

Итак, это в основном способ, которым я делаю что-то для настройки своих изображений. Проблема здесь в наборе процедур, вовлеченных в обратную операцию - взятие содержимого SD-карты и сохранение его на вашем ПК оптимальным способом. Сжатие, конечно, одна из важнейших вещей, которые вы можете сделать, однако этого недостаточно. При использовании ddвы можете либо записать всю SD-карту (включая пустые блоки) на свой компьютер, либо выбрать размер и количество секторов, которые вы хотите. Второй способ предлагает лучшее использование хранилища, однако он требует тщательного расчета вещей. Если вы сократите все, вы можете получить сломанную FS (о, неужели я не видел этого много раз...).

Я ищу решение, очень похожее на то, чтоКлонезиллапредложения - можно клонироватьтолько те блоки, которые действительно имеют контенти сбросить остальное таким образомсокращение FSи возможность хранить полностью функциональную FS в гораздо меньшем пространстве. Я сделал это в прошлом году, когда помогал соседу спасти данные на его сломанном HDD на MacBook.

Пример: если у вас установлена ​​Raspbian Jessie Lite, на вашей SD-карте будет занято всего около 1,3 ГБ. А теперь представьте, что карта имеет объем 32 ГБ. Конечно, со временем вы можете захотеть отформатировать ее и использовать оставшееся пространство, однако это обычно не так (по крайней мере, для меня). Поэтому, если я буду использовать ее ddвслепую, я просто создам файл образа объемом 32 ГБ. Сжатие уберет большую часть гигабайт, но запись ее обратно на SD-карту в более поздний момент времени для восстановления некоторого предыдущего состояния вашего Raspbian будет очень, очень долгим процессом. Я также могу скопировать FS (опять же с помощью dd). Но что, если фактическая установка (все файлы) займет всего около 600 МБ на этом разделе? Зачем мне копировать 1,3 ГБ, когда мне нужно всего 600 МБ? А что, если у меня есть SD-карта с Raspbian, на которой была использована функция «расширения файловой системы» инструмента конфигурации, и вся SD-карта отформатирована, хотя nее % фактически используется?

Есть идеи, как добиться этого с минимальными усилиями и доработками?

решение1

Сделайте дамп/восстановите небольшой раздел FAT dd(если он вообще нужен), но используйте e2image -a(изe2fsprogspackage) для основного раздела. Для восстановления на флэш-память эта -cопция кажется полезной (она перезаписывает только то, что действительно отличается на месте назначения).

решение2

Ну, хотя это и не ответ на ваш вопрос напрямую, вот что я сделал для легкой реставрации

  • скопируйте содержимое SD-карты в файл после установки всех необходимых пакетов
  • заархивируйте файл с максимальным сжатием и сохраните сжатый файл данных в качестве резервной копии
  • В случае повреждения восстановите файл резервной копии после архивации с помощью dd.

Связанный контент