Восстановление через inode, которого больше нет в журнале?

Es un delimitador alternativo para el comando sedsustituto (s). Por lo general, se usa la barra inclinada, como en s/pattern/replacement/, pero sedpermite usar casi cualquier carácter.

La razón principal para usar otro delimitador que no sea /en la expresión de sustitución sedes cuando la expresión actuará sobre caracteres literales /.

Por ejemplo, para sustituir la ruta /some/path/herepor /other/path/now, se puede hacer

s/\/some\/path\/here/\/other\/path\/now/

Esto sufre de lo que generalmente se conoce como "síndrome del palillo inclinado" , lo que significa que es difícil de leer y mantener adecuadamente.

En cambio,se nos permite usar otro delimitador de expresión:

s#/some/path/here#/other/path/now#

Usar ~es solo otro ejemplo de un delimitador de expresión de sustitución válido.

Tu expresión

s~ ~~g

es lo mismo que

s/ //g

y eliminará todos los espacios de la entrada. En este caso, no es necesario usar otro delimitador que no sea /ya que ni el patrón ni el reemplazo contienen /.

Otra forma de hacer lo mismo es

tr -d ' ' outfile

0
19.06.2019, 23:18
1 ответ

См.https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#The_Contents_of_inode.i_block

«Файловые флаги :524288» — это 0x80000 в шестнадцатеричном формате, поэтому это флаг «экстентов». Таким образом, хотя ваш extundeleteинтерпретировал блок inode.iкак прямые/косвенные/двойные косвенные/тройные косвенные указатели блоков, это неверно. Но мы все еще можем расшифровать это сами.

Первое число в поле «Прямые блоки» — 62218, что равно 0xF30A в шестнадцатеричном формате -магическое число для режима экстентного дерева (eh_magic), подтверждающее значение «Флаги файлов». Поскольку старые указатели блоков в стиле -имеют порядок следования байтов -32 -бит, а магическое число режима экстента — 16 -бит, мы знаем, что поле eh_entriesотображалось бы как часть первый номер "Прямых блоков". Поскольку это не испортило отображаемое магическое число, eh_entriesдолжно быть равно нулю.

Аналогично, второе число в «Прямых блоках» равно 4, что декодируется в два 16 -битовых числа :4 для eh_maxи 0 для eh_depth. Остальная часть блока inode.iкажется нулевой.

Итак, вот содержимое блока inode.i, интерпретируемое в соответствии с режимом экстента:

  • eh_magic= 62218, верно.
  • eh_entries= 0, после заголовка нет допустимых записей.
  • eh_max= 4, максимум 4 записи в inode.i.
  • eh_depth= 0, этот узел экстента будет указывать непосредственно на блоки данных
  • eh_generation= 0 (не используется стандартомext4)

Остальная часть inode.iсостоит из нулей, поэтому здесь нет допустимых узлов struct ext4_extentи struct ext4_extent_idx, что подтверждает значение eh_entriesравное 0.

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

2
28.01.2020, 02:40

Теги

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