01.01.2021 15:18
OlegON
 
Совмещая одинаковые файлы в Хранилище, я делаю из них хардлинки. Это позволяет сильно не заморачиваться дублированием файлов с разными именами и в разных каталогах, как кому-то удобно делать. Однако, иногда возникает необходимость находить такие файлы. Как это сделать...

Определение по одному файлу:
Код:
stat Del_oper_z.sql 
  File: Del_oper_z.sql
  Size: 162             Blocks: 8          IO Block: 4096   regular file
Device: 27h/39d Inode: 80111       Links: 2
Access: (0644/-rw-r--r--)  Uid: (  993/   nginx)   Gid: (  992/  chrony)
Access: 2020-10-23 14:25:36.026554810 +0300
Modify: 2003-11-20 11:29:48.000000000 +0300
Change: 2021-01-01 05:32:42.754617695 +0300
 Birth: 2020-10-23 14:25:36.026554810 +0300
Поиск:
Код:
find . -links 2
Суть проста, у хардлинка Links будет два или более, в зависимости от того, сколько имен файлов ссылаются на одни и те же данные.

У двух хардлинков, ведущих на один файл, Inode будут совпадать.
01.01.2021 15:21
OlegON
 
Вот с поиском совпадений на одном Inode пока у меня заминка... Пока нашел вариант
Код:
find . -type f -links +1 -printf '%i %n %p\n' | sort
вот еще повнятнее...
Код:
for i in $(find . -type f -links +1 2>/dev/null); do find -samefile $i | awk '{printf "%s ", $1}'; printf "\n"; done | sort | uniq
вот еще...
Код:
find /PATH/FOR/SEARCH/ -xdev -printf '%i\t%n\t%p\n' 2> /dev/null | fgrep -f <(find . -xdev -printf '%i\n' 2> /dev/null | sort -n | uniq -d) | sort -n
вот вариант с поиском ссылок по одному файлу
Код:
find /mount/point -mount -samefile /mount/point/your/file

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.