|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Eugene Grosbein 2:5006/1 29 Aug 2007 16:20:33 To : Victor Sudakov Subject : Re: undelete file -------------------------------------------------------------------------------- 29 авг 2007, среда, в 08:50 KRAST, Victor Sudakov написал(а): VS> Есть файл, которому сделали unlink. Hо я знаю PID процесса, который VS> держит этот файл открытым. Более того, я знаю номер иноды. VS> Можно ли файл восстановить? Теоретически fsdb может создать link для inode в каком-нибудь каталоге, практически на смонтированной fs он этого делать не даёт. Hо если есть свободное место, можно просто выдернуть содержимое из дисковых блоков таким скриптом. Запускать: saveinode /dev/device INUM /where/to/write/copy #!/bin/sh device="$1" inode="$2" outfile="$3" n='\ ' # определяем размер фрагмента (fsize) и кол-во фрагментов на блок (frag) eval $(dumpfs $device | sed -E '/(frag|fsize)/!d; s/(frag|fsize)[[:space:]]+([0-9]+).*/\1=\2/') # при помощи fsdb определяем размер и список блоков файла printf "inode $inode\nblocks\nexit\n" | fsdb -r $device | \ sed -E "/(^[0-9]|I=$inode)/!d; s/^.*SIZE=([0-9]+).*/+\1/; s/,//g; s/\(.*\)//; s/ (.)/$n\1/g" | \ sort | { read sizedef eval size=$(($sizedef)) while read block do dd if=$device bs=$fsize skip=$block count=$frag 2>/dev/null done > $outfile # усекаем результат до правильной длины truncate -s $size $outfile } Eugene -- И друзей успокоив и ближних любя, Мы на роли героев вводили себя. --- slrn/0.9.8.1 (FreeBSD) * Origin: Svyaz Service JSC (2:5006/1@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/26093ec7de94d.html, оценка из 5, голосов 10
|