Как создать образ раздела (ext4), а затем смонтировать его для просмотра/восстановления файлов?

Это можно сделать через

find dir -type f -exec grep -H '+ ID$' {} +

Это найдет все обычные файлы в каталоге dirили ниже, а затем запустит grep -H '+ ID$'пакетами из максимально возможного количества файлов. Результат будет содержать как имя файла, совпадающего с регулярным выражением, так и строки из совпавшего файла.

Чтобы получить только имена файлов, используйте -lвместо -Hс grep, а чтобы получить только совпадающие строки, используйте вместо этого -L.

Регулярное выражение + ID$будет соответствовать любой строке файла, содержащей точно такую ​​же строку + IDв самом конце строки.

Или без find, но с grep, который может выполнять рекурсию в подкаталоги:

grep -R '+ ID$' dir

В системах с grep, не выполняющим-H(это не -стандартная опция ), вместо этого вы можете использовать

find dir -type f -exec grep '+ ID$' /dev/null {} +

Если вам нужны только совпадающие строки (и отсутствие имен файлов )в такой системе, catфайлы вместе и grep,:

find dir -type f -exec cat {} + | grep '+ ID$'
2
12.09.2019, 16:24
3 ответа

Как root, просто catраздел на другой раздел:cat /dev/sdXn > /dev/sdYi

или в файл:cat /dev/sdXn > backup.img

Или в файл или раздел на другой машине:cat /dev/sdXn | ssh user@host 'cat > backup.img'

Вы могли бы использовать ddвместо cat, но для этого нет веской причины:

dd if=/dev/sdXn of=backup.img

Или, если вам нужен индикатор выполнения во время копирования и/или контроль над объемом буферизации, используемым во время копирования, вы можете использоватьpv:

pv /dev/sdXn > backup.img

Если раздел прочитал ошибки -, вы можете использовать ddrescueвместоcat:

ddrescue /dev/sdXn /dev/sdYi

или

ddrescue /dev/sdXn backup.img

ddrescueне будет писать на стандартный вывод (или читать со стандартного ввода, а также ), поэтому, если вы хотите, чтобы это backup.imgбыло на другом компьютере, вам придется скопировать его (, например. с помощьюscp)после этого или запишите его на монтирование NFS.

Или, как упомянул пользователь 1133275 в комментарии, можно использовать замену процесса:

ddrescue /dev/sdXn >(ssh user@host 'cat > backup.img')

Наконец, если вам нужна сжатая, монтируемая файловая система, вы можете использоватьqemu-img:

qemu-img convert -c -O qcow2 /dev/sdXn backup.qcow2

Для установки:

qemu-nbd --connect=/dev/nbd0 /path/to/backup.qcow2
mount /dev/nbd0 /mnt

И qemu-img, и qemu-nbdнаходятся в пакете qemu-utils. Кстати, если вы сделали образ всего диска, а не только раздела, вы могли бы запустить свою старую систему как виртуальную машину в новой системе.


Другой вариант — просто установить второй диск и установить на него Debian 10. Затем вы можете просто смонтировать старый диск где-нибудь в новой системе. Или даже двойная -загрузка между Debian 9 и Debian 10.


Лично я бы порекомендовал копию файла (, например. с tarили rsyncили даже cp -a), а не с резервной копией образа. Это полезнее,могут быть легко извлечены в любое место, и не тратят место или время на копирование пустых или неиспользуемых секторов.

резервное копирование образа (почти всегда )худший способ резервного копирования файловой системы.

4
27.01.2020, 21:55

e2image можно использовать для создания образа файловой системы ext4, при этом копируются только те сектора, которые используются:

e2image -ra /dev/sda1 /path/to/file.img

file.imgбудет создан как разреженный файл, поэтому он будет занимать только то пространство, которое действительно используется в файловой системе, хотя его видимый размер будет отражать емкость файловой системы.

Вы также можете использовать e2imageдля создания изображения QCOW2:

e2image -Qa /dev/sda1 /path/to/file.qcow2

Это создаст компактный файл, который все еще можно смонтировать.

Оба изображения могут быть сжаты, хотя в результате получается файл, который нельзя смонтировать напрямую.

5
27.01.2020, 21:55

ваш раздел ext4 смонтирован как/whatever

mkisofs -o    /somehwere_else/whatever.iso    /whatever

теперь у вас есть большой what.iso . Очевидно, вам придется помнить о дисковом пространстве, куда вы его перемещаете.

чтобы получить доступ к этому iso, вы должны просто сделать

mount -o loop /somewhere/whatever.iso   /anywhereyoulike/mywhateveriso/

все, что было в вашей папке /whatever, теперь будет доступно чтение -только в папке/anywhwereyoulike/mywhateveriso/

Тот факт, что у вас есть раздел ext4, почти не имеет значения, потому что вы будете сбрасывать эти данные в контейнер , который будет иметь другой формат файловой системы . Таким образом, были ли это данные в разделе ext4, xfs или btrfs, не имеет значения, потому что в этот момент у вас уже есть поддержка файловой системы ядра Linux для доступа к ним в первую очередь.

Как только вы поместите свои данные в этот iso-контейнер через mkisofs , который довольно универсален, к этим данным теперь можно получить доступ практически из любого места, поскольку isofs универсален... если ваш компьютер может читать cd/dvd [iso9660/udf], после чего вы сможете получить доступ к своему файлу what.iso. Создание.iso сделает его очень портативным.

использование catили tarили ddсохранит файловую систему, которая может быть проблематичной

0
27.01.2020, 21:55

Теги

Похожие вопросы