Иметь несколько жестких ссылок на один и тот же файл.
Как (например) одним файлом (жесткой ссылкой) получить другие, указывающие на одни и те же данные?
Нет реальной задачи. Просто интересно. Может быть полезно

2 ответа2

2

Большинство файловых систем не поддерживают каталог, в котором находятся жесткие ссылки на файл (или, точнее, на индод).

Таким образом, вам придется сканировать всю файловую систему, чтобы найти все жесткие ссылки. Вы можете сделать это, используя find -inum <inode number> .

Пример:

Создать файл со ссылкой:

$ ~> mkdir linktest
$ ~> cd linktest/
$ ~/linktest> touch file1
$ ~/linktest> ln file1 file2

Проверить иноды:

$ ~/linktest> stat file*
  File: file1
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 805h/2053d      Inode: 37          Links: 2
[...]
  File: file2
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 805h/2053d      Inode: 37          Links: 2
[...]

Как видите, обе записи файла имеют одинаковый inode (37), поскольку они являются жесткими ссылками на одни и те же данные.

Найти по номеру индекса:

$ ~/linktest> find -inum 37
./file1
./file2

Это на Linux, но оно должно работать так же на * BSD.

2

find имеет опцию -samefile для этого:

find / -xdev -samefile /myfile

Замените / на корень файловой системы, в которой находится myfile - например, если вы использовали /home/sergey/myfile и у вас есть /home в отдельной файловой системе, тогда используйте find /home .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .