Восстановление информации о разделах с блочных устройств

Вы не сделали ничего плохого: ^ и т. Д. действительно просит grep печатать только строки , начинающиеся с и т. Д. , и в вашем файле нет такой строки, что объясняет пустой вывод.

Если вместо этого вы хотели искать строки, начинающиеся с / etc , вам пришлось бы написать:

grep '^/etc'
1
08.01.2017, 05:39
1 ответ

Вы можете получить информацию о разделах из / sys , а именно из / sys / block / / / {start, size} .

Эта функция оболочки может вам помочь ::

print_partitions()
{
    local disk="$1"
    local part
    local template="%-6s %16s %16s %16s\n"

    printf "$template" Part. "First sector" "Last sector" "# sectors"
    for part in "/sys/block/$disk/"sd*; do
        st="$(cat "$part/start")"
        sz="$(cat "$part/size")"
        end=$((st + sz - 1))
        printf "$template" "${part##*/}" "$st" "$end" "$sz"
    done
}

Использование:

$ print_partitions sdd
Part.      First sector      Last sector        # sectors
sdd1               2048          2099199          2097152
sdd3            2099200       3907029167       3904929968

Примечание: здесь секторы - это сектора по 512 байт.

Для полного дампа ваших разделов:

for disk in /sys/block/sd*; do
    print_partitions "${disk##*/}"
    echo
done

Обратите внимание, что вы также могли перезаписать ценную информацию в начале первого раздела, например, суперблок ext, но это еще один вопрос .

3
27.01.2020, 23:34

Теги

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