что такое i-узлы (i-node) (с двумя и более жесткими cвязями?)

Модератор: Модераторы разделов

-=KNOP=-
Сообщения: 2

что такое i-узлы (i-node)

Сообщение -=KNOP=- »

надо на си под слаком сделать

сканировать все каталоги и находить все i-узлы (i-node) с двумя и более жесткими связями

для любого файла печатать список всех имен файлов указывающих на этот файл

буду рад любой идее
спасибо
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: что такое i-узлы (i-node)

Сообщение elide »

вот даже как... насколько я знаю, в самом иноде хранится только счетчик имен.
сами имена можно получить лишь просканировав всю файловую систему и отобрав файлы с нужным инодом.
если такую фигню надо делать постоянно, можно организовать индекс, типа как у locate. только его обновлять надо будет.
слава роботам!
Спасибо сказали:
-=KNOP=-
Сообщения: 2

Re: что такое i-узлы (i-node)

Сообщение -=KNOP=- »

постучись пожалуйста 571801
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: что такое i-узлы (i-node)

Сообщение elide »

стало мне интересно и написал я такую фигню на шелле (на си мне было лень писать)

Код: Выделить всё

#!/bin/sh

[ "G$1" = "G" ] && { echo "Usage: $0 filename";exit 1;}
DIR=`dirname "$1"`; cd "$DIR"; ff=`pwd -P`/`basename "$1"`; fmp="$ff" # modified Bolverk's code
[ -L $ff ] &&  ff=`/bin/ls -l $ff | awk -F'-> ' '{ print $2 }'`
fspec=`/bin/ls -iL "$ff"` ||  exit 1
inode=`echo $fspec | sed -e 's/^ *\([0-9]\+\).*/\1/g'`
while true; do
fmp=`echo $fmp | sed -e 's/\/[^/]\+$//'`
[ "G$fmp" = "G" ] && { mp="/"; break; }
mp=`cat /proc/mounts | cut -d' ' -f2 | grep $fmp` && break
done
echo searching for hardlinks to \'$inode\' on \'$mp\'
find $mp -inum $inode -mount 2> /dev/null
конкретно это тебе, разумеется, не нужно, но тут описан весь процесс, так что переписать на ц нехитро.
слава роботам!
Спасибо сказали: