Иметь несколько жестких ссылок на один и тот же файл.
Как (например) одним файлом (жесткой ссылкой) получить другие, указывающие на одни и те же данные?
Нет реальной задачи. Просто интересно. Может быть полезно
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.
find
имеет опцию -samefile
для этого:
find / -xdev -samefile /myfile
Замените /
на корень файловой системы, в которой находится myfile
- например, если вы использовали /home/sergey/myfile
и у вас есть /home
в отдельной файловой системе, тогда используйте find /home
.